我试图用Python编写一个简单(轻量级)RESTful服务器。我遇到了来自Google的以下代码:
import web
import json
from mimerender import mimerender
render_xml = lambda message: '<message>%s</message>'%message
render_json = lambda **args: json.dumps(args)
render_html = lambda message: '<html><body>%s</body></html>'%message
render_txt = lambda message: message
urls = (
'/(.*)', 'greet'
)
app = web.application(urls, globals())
class greet:
@mimerender(
default = 'html',
html = render_html,
xml = render_xml,
json = render_json,
txt = render_txt
)
def GET(self, name):
if not name:
name = 'world'
return {'message': 'Hello, ' + name + '!'}
if __name__ == "__main__":
app.run()
我不熟悉@mimerender
行中使用的语法。但是,我通常会遇到这样一个decorator和-date-decorator的组合:
代码的@mimerender
部分是什么意思/do?在
这里发生的是
mimerender
是一个要获得的装饰器:但是还有一些参数需要传递给
mimerender
,所以它们就在那里完成了。在从
^{pr2}$mimerender
的docstring中,如果需要额外的阅读:当被调用时,
mimerender
将使用提供的参数构造并返回一个装饰函数。然后使用返回的decorator函数装饰GET
方法。在相当于
^{pr2}$expr
可以是任何有效的python表达式,因此mimerender(…)
返回一个可调用对象(可以是构造函数,也可以是返回可调用对象的函数)。这里没什么魔力:)因此,上述呼吁是公正的
相关问题 更多 >
编程相关推荐