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)