Cherrypy диспетчер с декоратором popagrs. Маршруты дочерних узлов
Я пытаюсь получить следующие URL-адреса, чтобы ответить
- / book / [bookname] (рабочий)
- / book / getdetails / [bookname] (работает)
- / book / [bookname] / page /[pagenumber] (рабочий)
- / book / [bookname] / page / getdetails / [pagenumber] (не работает)
- / book / [bookname] / page / test (работает)
Основной сервисный обработчик:
class Service(object):
def __init__(self):
self.book = Book()
@cherrypy.expose
def index(self):
return 'normal page'
Класс книг:
@cherrypy.popargs('book_name')
class Book(object):
def __init__(self):
self.page = Page()
@cherrypy.expose
@cherrypy.tools.json_out()
def index(self, book_name):
return {"book name": book_name}
@cherrypy.expose
@cherrypy.tools.json_out()
def getdetails(self, book_name):
return {"details": bookname}
Класс страницы:
@cherrypy.popargs('page_number')
class Page(object):
@cherrypy.expose
@cherrypy.tools.json_out()
def index(self, book_name, page_number):
return {"book": book_name, "no": page_number}
# DOES NOT WORK AS EXPEXTED
# @cherrypy.expose
# @cherrypy.tools.json_out()
# def getdetails(self, book_name, page_number):
# return {"book": book_name, "no": page_number}
@cherrypy.expose
@cherrypy.tools.json_out()
def test(self, book_name):
return {"details": "some test"}
Сервис является корневым классом
if __name__ == '__main__':
cherrypy.quickstart(Service())
`