RESTful cherrypy 中的 Web 服务示例
RESTful web service example in cherrypy
我正在尝试在 python 中编写 RESTful 网络服务。但是在尝试 Cherrypy Website 上给出的教程时,我遇到了类似
的错误
Traceback (most recent call last):
File "rest.py", line 35, in <module>
cherrypy.quickstart(StringGeneratorWebService(), '/', conf)
TypeError: expose_() takes exactly 1 argument (0 given)
其中 rest.py 是我的文件,它在网站上和副标题 "Give us a REST" 下包含完全相同的代码。
我很清楚,从错误消息来看,我显然缺少一个应该传入的参数。但我不清楚我应该在哪里修改该代码以使其正常工作。
我尝试在第 35 行修复一些问题,但没有任何帮助,我被卡住了!请帮我解决这个问题,或者请提供一些代码片段以在 cherrypy 中创建 REST 服务。谢谢!
您正在使用的 CherryPy 版本 (3.2.2
) 不支持 classes 上的 cherrypy.expose
装饰器,该功能是 added in version 6。
您可以使用将 exposed
属性设置为 True
的旧语法(它也与较新版本兼容)。
class 会变成这样:
class StringGeneratorWebService(object):
exposed = True
@cherrypy.tools.accept(media='text/plain')
def GET(self):
return cherrypy.session['mystring']
def POST(self, length=8):
some_string = ''.join(random.sample(string.hexdigits, int(length)))
cherrypy.session['mystring'] = some_string
return some_string
def PUT(self, another_string):
cherrypy.session['mystring'] = another_string
def DELETE(self):
cherrypy.session.pop('mystring', None)
我正在尝试在 python 中编写 RESTful 网络服务。但是在尝试 Cherrypy Website 上给出的教程时,我遇到了类似
的错误Traceback (most recent call last):
File "rest.py", line 35, in <module>
cherrypy.quickstart(StringGeneratorWebService(), '/', conf)
TypeError: expose_() takes exactly 1 argument (0 given)
其中 rest.py 是我的文件,它在网站上和副标题 "Give us a REST" 下包含完全相同的代码。
我很清楚,从错误消息来看,我显然缺少一个应该传入的参数。但我不清楚我应该在哪里修改该代码以使其正常工作。
我尝试在第 35 行修复一些问题,但没有任何帮助,我被卡住了!请帮我解决这个问题,或者请提供一些代码片段以在 cherrypy 中创建 REST 服务。谢谢!
您正在使用的 CherryPy 版本 (3.2.2
) 不支持 classes 上的 cherrypy.expose
装饰器,该功能是 added in version 6。
您可以使用将 exposed
属性设置为 True
的旧语法(它也与较新版本兼容)。
class 会变成这样:
class StringGeneratorWebService(object):
exposed = True
@cherrypy.tools.accept(media='text/plain')
def GET(self):
return cherrypy.session['mystring']
def POST(self, length=8):
some_string = ''.join(random.sample(string.hexdigits, int(length)))
cherrypy.session['mystring'] = some_string
return some_string
def PUT(self, another_string):
cherrypy.session['mystring'] = another_string
def DELETE(self):
cherrypy.session.pop('mystring', None)