То есть вы хотите преобразовать / getOrders? Account = X & type = Y в нечто вроде / orders / account / type, используя Cherrypy.
Я бы попробовал подход, использованный в http://cherrypy.readthedocs.org/en/latest/tutorial/REST.html, как упомянуто @Tomasz Blachowicz, с некоторыми изменениями.
Помните, что вы можете обрабатывать что-то вроде / order / account / type с помощью
@cherrypy.expose
def order(account=None, type=None):
print account, type
class Root(object):
pass
root = Root()
root.orders = orders
cherrypy.quickstart(root, '/')
Так что, если вы возьмете пример, приведенный в http://cherrypy.readthedocs.org/en/latest/tutorial/REST.html,, вы можете изменить его для обработки URL этого типа.
class Orders(object):
exposed = True
def __init__(self):
pass
def GET(self, account=None, type=None):
#return the order list for this account type
return getOrders(account, type)
def PUT(self, account=None, type=None, orders=None):
#Set the orders associated with account or something
setOrders(account, type, orders)
class Root(object):
pass
root = Root()
root.orders = Orders()
conf = {
'global': {
'server.socket_host': '0.0.0.0',
'server.socket_port': 8000,
},
'/': {
'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
},
}
cherrypy.quickstart(root, '/', conf)
Почему вы хотите устанавливать ордера, используя этот метод put, я не знаю, но он дает еще один пример того, как делать методы PUT. Все, что вам нужно сделать, это заменить метод, использованный в запросе, на PUT, и он будет использовать метод PUT () для Orders и будет использовать обычный GET для Orders, а также метод GET (). Поскольку метод POST () не определен, POST нельзя использовать в этом примере. Если вы попробуете POST или DELETE, вы получите «405 Method Not Allowed».
Мне нравится этот подход, потому что легко увидеть, что происходит, и, я думаю, он отвечает на ваш вопрос.