【发布时间】:2013-01-13 10:31:42
【问题描述】:
我有一个 REST(或几乎是 REST)网络 API,
我希望 API 用户能够使用所有 api,即使由于某种原因只能进行 GET 调用,所以计划是接受一个 url 参数(查询字符串),如 request_method,它可以是 GET(默认)或 POST、PUT、DELETE,我想路由它们。
我的问题不是标准的请求处理程序覆盖和检查get(self) 方法中的每个 httpRequestHandler,如果这是一个 POST、PUT、DELETE 和调用适当的函数,是有没有办法以更一般的方式执行此“路由”,例如在应用程序定义中的 URL 模式或覆盖路由功能或其他什么?
为了清楚,这些请求都是通过带有参数的 GET 来的,例如 ?request_method=POST
感谢任何建议。
可能的解决方案:
只有一个“.*” url 模式并在单个 RequestHandler 中处理所有路由。应该可以正常工作,除了我不会利用 Tornado 的 url 模式匹配功能。
在所有请求处理程序中的所有
get(self)方法中添加if,并检查该请求是否应由get处理,如果不是,则调用相关方法。
【问题讨论】:
-
一旦您绕过标准的
GET、POST、PUT、DELETE功能,您就不再拥有 ReSTful API。仅针对框架的上下文,有一些很好的答案here。 API 用户会被限制为GET请求的一些原因是什么? -
我认为提供 GET 替代方案的原因有很多,其中之一是如果人们想要进行跨域 JSONP 调用,而 POST 则无法实现。
标签: python rest get tornado url-pattern