Торнадо-вихрь не собирает параметры в URL - PullRequest
0 голосов
/ 04 июля 2019

У меня есть API, встроенный в Tornado, и я пытаюсь документировать его, используя tornado-swirl. По какой-то причине невозможно выбрать необязательный параметр запроса из указанного URL-адреса. Как это можно решить? Я не уверен, что я делаю неправильно или чего мне здесь не хватает.

Я изменил шаблон и даже использовал тот, который использовался в документы и тут .

import tornado.web
import tornado_swirl as swirl

from .base import BaseHandler

@swirl.restapi('/item/(?P<id>[\w-]+)?')
class ItemHandler(BaseHandler):
    def post(self, id):
        """Item

        Creating a new item

        Tags:
            Item
        """
        # store the item
        pass

     async def get(self, id):
        """Item

        Get items or item

        Tags:
            Item
        """
        # return all items if no id was provided
        # or return item by id when provided
        pass

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "/Users/.../venv/lib/python3.7/site-packages/tornado/web.py", line 1697, in _execute
    result = method(*self.path_args, **self.path_kwargs)
  File "/Users/.../venv/lib/python3.7/site-packages/tornado_swirl/views.py", line 101, in get
    for path, spec, operations in apis},
  File "/Users/.../venv/lib/python3.7/site-packages/tornado_swirl/views.py", line 100, in <dictcomp>
    'paths': {path: self.__get_api_spec(spec, operations)
  File "/Users/.../venv/lib/python3.7/site-packages/tornado_swirl/views.py", line 368, in find_api
    ['{%s}' % arg for arg in [param.name for param in vals]]
TypeError: not enough arguments for format string

Очевидно, это не получение аргументов. Я думаю, что это как-то связано с тем, как я определяю URL там.

1 Ответ

2 голосов
/ 04 июля 2019

Вам просто нужно сообщить параметр пути в строке документации, что-то вроде этого:

"""Item

Creating a new item

Path Params:
    id (string) --  Your id

Tags:
    Item
"""
...