Comments (12)
On Fri, Aug 3, 2012 at 3:44 PM, greatghoul <
[email protected]
wrote:
我有两个 app ,需要分别配置不同的 soap_url 及 documentation, namespace 等
如何做到这一点呢?目前是不支持的。只能修改代码才可以实现。 一般的服务还会不同吗?
I like python!
UliPad <>: http://code.google.com/p/ulipad/
UliWeb <>: https://github.com/limodou/uliweb
My Blog: http://my.oschina.net/limodou
from uliweb.
两个业务不相同,用的场景也不同,想分成两个 soap_url
想配置成
/services/serviceA?wsdl
/services/serviceB?wsdl
如果不能独立配置的话,客户端用的话(尤其是在java里面),在场景A中可能会通过wsdl导出一堆用不上的类。
没有什么不用修改 uliweb 代码来实现的折中办法吗,只要能分成两个独立的 wsdl 就行呀。
On Fri, Aug 3, 2012 at 3:52 PM, limodou <
[email protected]
wrote:
目前是不支持的。只能修改代码才可以实现。 一般的服务还会不同吗?
Ghoul To World! - http://www.g2w.me
ScriptFan - http://scriptfan.com/
from uliweb.
2012/8/3 greatghoul <
[email protected]
两个业务不相同,用的场景也不同,想分成两个 soap_url
想配置成/services/serviceA?wsdl
/services/serviceB?wsdl如果不能独立配置的话,客户端用的话(尤其是在java里面),在场景A中可能会通过wsdl导出一堆用不上的类。
没有什么不用修改 uliweb 代码来实现的折中办法吗,只要能分成两个独立的 wsdl 就行呀。
还是要改代码,主要还是配置项目前只是其中的值可以配置,但是section本身无法配,也就是无法支持多个配置。所以要修改view函数,让view函数本身可以使用不同的配置。如果你需要我可以修改一下,把view由原来的函数改为class,这样你就可以派生新的view函数,从而可以配置。
I like python!
UliPad <>: http://code.google.com/p/ulipad/
UliWeb <>: https://github.com/limodou/uliweb
My Blog: http://my.oschina.net/limodou
from uliweb.
把view由原来的函数改为class
听起来好像会改动很大呀,会不会影响 uliweb view 本来的逻辑呀。
不过我的确有需要为不同的 app 配置独立 soap 的需求,如果 uliweb 以后会在这方面支持的话,就最好了,我先用一个 wsdl 做着。
如果修改成多 soap 支持对 uliweb 影响比较大的话,还是慎重些吧,相对于功能丰富,还是希望应用更稳定一些。
还有, service 方法的文档注释能否生成 CDATA,这样能保持换行等了,更方便阅读一些。
from uliweb.
2012/8/3 greatghoul <
[email protected]
把view由原来的函数改为class
听起来好像会改动很大呀,会不会影响 uliweb view 本来的逻辑呀。
不过我的确有需要为不同的 app 配置独立 soap 的需求,如果 uliweb 以后会在这方面支持的话,就最好了,我先用一个 wsdl 做着。
如果修改成多 soap 支持对 uliweb 影响比较大的话,还是慎重些吧,相对于功能丰富,还是希望应用更稳定一些。
还有, service 方法的文档注释能否生成 CDATA,这样能保持换行等了,更方便阅读一些。
这块的确有一些改动。我先试试看吧。 文档那个我看看,因为是使用pysimplesoap来做的,以前没对它的细节有所了解。
I like python!
UliPad <>: http://code.google.com/p/ulipad/
UliWeb <>: https://github.com/limodou/uliweb
My Blog: http://my.oschina.net/limodou
from uliweb.
嘿嘿,那坐等更新了。
2012/8/3 limodou <
[email protected]
这块的确有一些改动。我先试试看吧。 文档那个我看看,因为是使用pysimplesoap来做的,以前没对它的细节有所了解。
Ghoul To World! - http://www.g2w.me
ScriptFan - http://scriptfan.com/
from uliweb.
2012/8/3 greatghoul <
[email protected]
嘿嘿,那坐等更新了。
有一个问题是如何收集function。原来是一个soap是会装所有soap函数收集到一个全局的变量中,但是如果可以支持不同的地址的话,soap如何与不同的地址对应?还是收集到一起,但是两个地址共享?要么就是在定义时要指定收集到哪个地址上去,比如原来是:
@soap('GetName', returns={'Int':int}, args={'a':int})
def p(a):
print a
假定有两个URL定义:
[EXPOSES]
a= '/SOAP1', 'uliweb.contrib.soap.views.SoapView.soap'
b= '/SOAP2', 'uliweb.contrib.soap.views.SoapView.soap'
上面如果绑定到b上去,则定义:
@soap('GetName', returns={'Int':int}, args={'a':int}, target='b')
这样?増加多个定义后,处理要复杂一些了。
I like python!
UliPad <>: http://code.google.com/p/ulipad/
UliWeb <>: https://github.com/limodou/uliweb
My Blog: http://my.oschina.net/limodou
from uliweb.
[DECORATORS]
soapA = 'uliweb.contrib.soap.soap'
soapB = 'uliweb.contrib.soap.soap'
ÕâÑùÓа취ʵÏÖô£¿
2012/8/3 limodou <
[email protected]
[EXPOSES]
a= '/SOAP1', 'uliweb.contrib.soap.views.SoapView.soap'
b= '/SOAP2', 'uliweb.contrib.soap.views.SoapView.soap'
Ghoul To World! - http://www.g2w.me
ScriptFan - http://scriptfan.com/
from uliweb.
On Fri, Aug 3, 2012 at 4:47 PM, greatghoul <
[email protected]
wrote:
[DECORATORS]
soapA = 'uliweb.contrib.soap.soap'
soapB = 'uliweb.contrib.soap.soap'ÕâÑùÓа취ʵÏÖô£¿
但是decorator soap如何识别?它不会去继承。soap服务是由两部分构成的:
- decorator 它是用来采集url的,上面的定义其实还是一个函数,本身它是区分不出来的,除非定义新的函数
2.
后台对应的View的处理,它用来处理指定url上的函数。它也要区分不同的url上来的请求,并且去查找不同的decorator(或指定了不同的容器)的soap函数。
所以decorator和view的处理要能够对应起来才可以。不然会乱掉。
I like python!
UliPad <>: http://code.google.com/p/ulipad/
UliWeb <>: https://github.com/limodou/uliweb
My Blog: http://my.oschina.net/limodou
from uliweb.
已经尝试着实现了。首先是原来的 uliweb.contrib.soap.views
中将原来的 soap
的view function 改为了 SoapView
class的定义,这样就可以让用户从这个类进行继承。在这个类中会有一个 config
的类属性,它用来指定将使用哪个settings的配置名。代码为:
class SoapView(object):
config = 'SOAP'
这样就表示,它会使用 settings 中的 SOAP
配置项。并且在通过 decorators 来关联 soap 函数时,如果在decorator 中传入 target
参数,就会和对应的 view class 匹配。
下面举一个例子,为了实现除了用原来的 SoapView
的处理之外,再定义新的 soap 处理,同时可以使用不同的URL路径,首先定义新的 View Class:
class SoapView2(SoapView):
config = 'SOAP2'
这样它会使用 SOAP2
的配置。然后我们就可以使用 decorators.soap
来修饰新的soap函数,并且绑定到 SOAP2
上去,如:
@decorators.soap('hello2', returns={}, args={'a':str}, target='SOAP2')
def hello2(a):
"""
This function is bound to SOAP2
"""
return
然后我们再看一下settings的定义:
[EXPOSES]
soap2 = '/SOAP2', 'soap_test.views.SoapView2.soap'
[SOAP2]
namespace = None
documentation = 'Uliweb Soap2 Service'
name = 'UliwebSoap2'
prefix = 'pys'
EXPOSES
下面的 soap2
其实没有太大的用处,它主要是为了给后面的URL定义一个唯一识别的串,这样以后的app可以覆盖它。关键是 [SOAP2]
这个要与view class中的 config
定义的一致,要特别注意。
这里我没有定义 SOAP
,因为它是缺省定义,如果你要修改的话可以去覆盖它。
客户端的示例很简单,我使用suds,因为发现pysimplepy自带的好象有问题。对于不同的地址,我们要创建不同的client,如要访问 SOAP2
的 hello2
函数,代码如下:
from suds.client import Client
client2 = Client('http://localhost:8000/SOAP2?wsdl')
result = client2.service.hello2('limodou')
print 'test hello2:', result
上面的代码示例可以从 https://github.com/limodou/uliweb-doc 中的 projects/soap_test
找到。文档还没合进去,回头找个机会合一下。你可以先试试,看还有没有问题。
from uliweb.
更新的真快,我周一去公司的时候试着配置下。
2012/8/5 limodou <
[email protected]
已经尝试着实现了。首先是原来的
uliweb.contrib.soap.views
中将原来的soap
的view function
改为了SoapView
class的定义,这样就可以让用户从这个类进行继承。在这个类中会有一个config
的类属性,它用来指定将使用哪个settings的配置名。代码为:class SoapView(object): config = 'SOAP'
这样就表示,它会使用 settings 中的
SOAP
配置项。并且在通过 decorators 来关联 soap
函数时,如果在decorator 中传入target
参数,就会和对应的 view class 匹配。下面举一个例子,为了实现除了用原来的
SoapView
的处理之外,再定义新的 soap 处理,同时可以使用不同的URL路径,首先定义新的
View Class:class SoapView2(SoapView): config = 'SOAP2'
这样它会使用
SOAP2
的配置。然后我们就可以使用decorators.soap
来修饰新的soap函数,并且绑定到SOAP2
上去,如:@decorators.soap('hello2', returns={}, args={'a':str}, target='SOAP2') def hello2(a): """ This function is bound to SOAP2 """ return
然后我们再看一下settings的定义:
[EXPOSES] soap2 = '/SOAP2', 'soap_test.views.SoapView2.soap' [SOAP2] namespace = None documentation = 'Uliweb Soap2 Service' name = 'UliwebSoap2' prefix = 'pys'
EXPOSES
下面的soap2
其实没有太大的用处,它主要是为了给后面的URL定义一个唯一识别的串,这样以后的app可以覆盖它。关键是
[SOAP2]
这个要与view class中的config
定义的一致,要特别注意。这里我没有定义
SOAP
,因为它是缺省定义,如果你要修改的话可以去覆盖它。客户端的示例很简单,我使用suds,因为发现pysimplepy自带的好象有问题。对于不同的地址,我们要创建不同的client,如要访问
SOAP2
的hello2
函数,代码如下:from suds.client import Client client2 = Client('http://localhost:8000/SOAP2?wsdl') result = client2.service.hello2('limodou') print 'test hello2:', result
上面的代码示例可以从 https://github.com/limodou/uliweb-doc 中的
projects/soap_test
找到。文档还没合进去,回头找个机会合一下。你可以先试试,看还有没有问题。
Reply to this email directly or view it on GitHub:
#1 (comment)
Ghoul To World! - http://www.g2w.me
ScriptFan - http://scriptfan.com/
from uliweb.
解决了。
from uliweb.
Related Issues (20)
- Refact makecmd command
- bad runserver -h option HOT 1
- AttributeError: 'instancemethod' object has no attribute '__rule_skip__' HOT 2
- uliweb load raise UnboundLocalError
- gevent 下的 race condition HOT 31
- 多数据库 engine = get_connection(engine_name='default') 有问题 HOT 1
- orm autocreat bug HOT 3
- 开发时运行uliweb runserver错误 HOT 2
- JSON类型的字段里不能存放中文 HOT 1
- application.template and get SyntaxError exception HOT 3
- support Posgresql JSONB column?
- Cannot set Form.errors['_']
- Javascript string issue because of string strip operation of uliweb template
- wrong directory name of setup.py generated by "uliweb makemodule" HOT 1
- _generate_etag will get exception with unicode filename which cannot encode by ascii
- try to use multiple database but get exception HOT 1
- Uliweb doesn't support oracle VARCHAR2
- request.POST.copy() 非安全線程?
- 执行uliweb syncdb报错 HOT 1
- Proposing a PR to fix a few small typos
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from uliweb.