我正在使用Tornado(使用Tornado-JSON)制作应用程序。 我的目标是创建返回JSON的休息服务,并且可以处理参数中传递的任何内容 - 如果需要搜索/查找(尝试使用JSON为不同的参数传递emberjs),例如:
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)。
我对所有蟒蛇和龙卷风都很陌生,但不应该(按照路线)以这种方式调用:
/ hostedservices /服务/?tenant_id = VALUE 要么 / hostedservices /服务/?ID =值
肯定我会有更多的属性,但不知何故,当我从soapUI测试它似乎我总是必须传递1参数作为URL路径(模板样式参数)的一部分而不是常规参数,因为我不能它有2个具有相同属性类型(但属性不同)的处理程序我将非常感谢我现在能得到的所有帮助......
谢谢!
答案 0 :(得分:0)
此路由应解决您的问题:
[
"/hostedservices/services/tenant/(?P<id>[a-zA-Z0-9_]+)/?$",
"<class 'sysinfo.hostedservices.ServicesTenantHandler'>"
],
[
"/hostedservices/services/(?P<id>[a-zA-Z0-9_]+)/?$",
"<class 'sysinfo.hostedservices.ServicesIdHandler'>"
]
将为 ServicesTenantHandler 生成 / hostedservices / services / tenant / VALUE 路由,路由 / hostedservices / services / VALUE 将为为 ServicesIdHandler 生成(而不是/ hostedservices / services /?tenant_id = VALUE或/ hostedservices / services /?id = value routes)。
为了获得此结果,处理程序必须是:
class ServicesHandler(CorsMixin, APIHandler):
__url_names__ = ["services"]
....
class ServicesTenantHandler(ServicesHandler):
__url_names__ = ["services/tenant/"]
def get(self, id):
....
class ServicesIdHandler(ServicesHandler):
def get(self, id):
....