【发布时间】:2015-04-06 11:48:21
【问题描述】:
我正在使用 Tornado 制作应用程序(使用 Tornado-JSON)。 我的目标是创建返回 JSON 的 rest 服务,并且可以只处理传入参数的任何内容 - 如果需要,可以搜索/查找(尝试为 emberjs 提供 JSON 以获取传递的不同参数),例如:
class ServicesHandler(CorsMixin,APIHandler):
....
__url_names__ = ["services"]
class ServicesTenantHandler(ServicesHandler):
def get(self, tenant_id):
....
class ServicesIdHandler(ServicesHandler):
def get(self, id):
....
这就是我在上面的路线中得到的:
[
"/hostedservices/services/(?P<id>[a-zA-Z0-9_]+)/?$",
"<class 'sysinfo.hostedservices.ServicesIdHandler'>"
],
[
"/hostedservices/services/(?P<tenant_id>[a-zA-Z0-9_]+)/?$",
"<class 'sysinfo.hostedservices.ServicesTenantHandler'>"
]
但是,除了 /hostedservices/services/SOME_VALUE
,我不能让它接收任何东西在这种情况下,一切都是无用的,因为总是调用第二个类(ServiceIdHandler)。
我对所有 python 和龙卷风都很陌生,但我不应该(根据路由)以这种方式调用:
/hostedservices/services/?tenant_id=VALUE 或者 /hostedservices/services/?id=value
当然我会有更多的属性,但是当我从soapUI测试它时,我似乎总是必须传递1个参数作为URL路径的一部分(模板样式参数)而不是常规参数,因此我不能它有 2 个具有相同属性类型(但属性不同)的处理程序
我将不胜感激在这一点上我能得到的所有帮助......
谢谢!
【问题讨论】:
-
嘿!这有点晚了,但我只是想说我正在为 Tornado-JSON(v2.0)重写可定制的路由,以使其更容易和更清晰(我是作者)。分行已经做了很长一段时间了,但我真的很忙,没有太多时间来处理它。如果您有兴趣了解它的发展方向,您可以查看到目前为止我在差异底部为自己留下的一些 cmets (github.com/hfaran/Tornado-JSON/compare/…)