如何将 HTTP 端点添加到 spyne WsgiApplication
How do I add HTTP endpoints to a spyne WsgiApplication
如果我有一个继承自 spyne.Application
的 spyne 应用程序并通过 spyne.WsgiApplication
对象为其提供服务,我将如何向 WSGI 服务器添加自定义 HTTP 端点,例如 /
或 /info
?
基本结构与 spyne.io
上的相同
class HelloWorldService(ServiceBase):
@srpc(Unicode, Integer, _returns=Iterable(Unicode))
def say_hello(name, times):
for i in range(times):
yield 'Hello, %s' % name
application = Application([HelloWorldService], # <--- spyne.Application
tns='spyne.examples.hello',
in_protocol=Soap11(validator='lxml'),
out_protocol=JsonDocument()
)
if __name__ == '__main__':
from wsgiref.simple_server import make_server
wsgi_app = WsgiApplication(application) # <--- spyne.WsgiApplication
server = make_server('0.0.0.0', 8000, wsgi_app)
server.serve_forever()
在 spyne
中导入 from spyne.util.wsgi_wrapper import WsgiMounter
(Source) 将允许您使用单个字典参数调用 WsgiMounter
函数。字典的键表示根端点的扩展,值是 WSGI 兼容的应用程序。
例如:
def create_web_app(config):
app = Flask(__name__)
@app.route('/about')
def about():
return 'About Page'
return app
wsgi_app = WsgiMounter({
'': SpyneAppWsgi(app),
'www': create_web_app(config)
})
..将配置一台服务器,其中 spyne application 将从根目录提供服务,create_web_app
app
的所有内容将从 /www
提供。 (要到达 /about
页面,您将路由到 http://localhost:8080/www/about
)
在此示例中 create_web_app
returns 一个 Flask
应用程序。
如果我有一个继承自 spyne.Application
的 spyne 应用程序并通过 spyne.WsgiApplication
对象为其提供服务,我将如何向 WSGI 服务器添加自定义 HTTP 端点,例如 /
或 /info
?
基本结构与 spyne.io
上的相同class HelloWorldService(ServiceBase):
@srpc(Unicode, Integer, _returns=Iterable(Unicode))
def say_hello(name, times):
for i in range(times):
yield 'Hello, %s' % name
application = Application([HelloWorldService], # <--- spyne.Application
tns='spyne.examples.hello',
in_protocol=Soap11(validator='lxml'),
out_protocol=JsonDocument()
)
if __name__ == '__main__':
from wsgiref.simple_server import make_server
wsgi_app = WsgiApplication(application) # <--- spyne.WsgiApplication
server = make_server('0.0.0.0', 8000, wsgi_app)
server.serve_forever()
在 spyne
中导入 from spyne.util.wsgi_wrapper import WsgiMounter
(Source) 将允许您使用单个字典参数调用 WsgiMounter
函数。字典的键表示根端点的扩展,值是 WSGI 兼容的应用程序。
例如:
def create_web_app(config):
app = Flask(__name__)
@app.route('/about')
def about():
return 'About Page'
return app
wsgi_app = WsgiMounter({
'': SpyneAppWsgi(app),
'www': create_web_app(config)
})
..将配置一台服务器,其中 spyne application 将从根目录提供服务,create_web_app
app
的所有内容将从 /www
提供。 (要到达 /about
页面,您将路由到 http://localhost:8080/www/about
)
在此示例中 create_web_app
returns 一个 Flask
应用程序。