Cherrypy диспетчер с декоратором popagrs. Маршруты дочерних узлов

Я пытаюсь получить следующие URL-адреса, чтобы ответить

  1. / book / [bookname] (рабочий)
  2. / book / getdetails / [bookname] (работает)
  3. / book / [bookname] / page /[pagenumber] (рабочий)
  4. / book / [bookname] / page / getdetails / [pagenumber] (не работает)
  5. / 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())

`

0 ответов

Другие вопросы по тегам