2

我正在开发一个响应 GET 和 PUT 请求的 REST API。

由于多种原因,此 API 将使用 Python 和 Twisted 编写。也就是说,扭曲的网络似乎是基于我找到的所有示例的资源。

这意味着据我了解,我必须设置单独的资源并为每个资源定义 GET 和 POST 处理程序。

我想做的是设置 GET 和 POST 处理程序,它们被称为请求的任何资源。

在伪代码中:

import *the appropriate modules*

class Callback(resource.Resource):
    def render_GET(self,request):
        print "GET!"
    def render_POST(self,request):
        print "POST!"

def main():
    *magic*
    reactor.listenTCP(settings.port,factory)
    reactor.run()
    print "Started callback server on port %d" % settings.port

if __name__ == '__main__':
    main()

不幸的是,我在网上搜索的例子没有办法做到这一点。

任何关于如何设置“包罗万象”资源或使用不同反应器类型来处理此问题的意见都将受到赞赏。

4

1 回答 1

6

Twisted Web in 60 Seconds文档系列回答了这个问题(可能还有其他问题:) 。

特别是,您询问的是 Twisted Web 中所谓的“动态 URL 调度”。听起来您已经找到了Resource.putChild可以让您处理静态 URL 调度的 API。使用动态 URL 调度,您不必为要处理的所有 URL 预先设置处理程序。相反,您重写getChild以实现您自己的逻辑来按需创建资源。

有关更多详细信息,请参阅动态调度文档,但要点是:

class Calendar(Resource):
   def getChild(self, name, request):
       return YearPage(int(name))

这是一个通过创建一个YearPage知道该整数是什么的资源来处理任何整数子级的资源。您应该能够执行类似的操作来创建Callback资源。

于 2012-11-29T14:08:22.533 回答