Разобрать uuid с параметризованного маршрута в соколе
У меня есть falcon
приложение с параметризованным маршрутом для получения ресурсов. Пользователь не знает uuid
ресурса, потому что он временный, поэтому требуется перенаправление.
Пользователь выполнит запрос GET / транзакции и перенаправит на возвращенный путь 302 найденного ответа.
Как я могу разобрать uuid из пути запроса?
Приложение будет выглядеть так:
api = falcon.API()
api.add_route('/transaction', Transaction)
api.add_route('/transaction/{id}', TransactionItem))
И источники примерно так:
class Transaction(object):
def on_get(self, req, resp):
id = get_current_id()
resp.status = falcon.HTTPFound('/TransactionItem/{}'.format(id))
class TransactionItem(object):
def on_get(self, req, resp):
// Parse id from path?
transaction = get_transaction(id)
// ...
// include info in the response, etc
resp.status = falcon.HTTP_200
1 ответ
Итак.
Flacon передает совпадающие поля маршрута в качестве аргументов ключевых слов. Это означает, что это в вашем TransactionItem
класс твой on_get
должно иметь одно из (Вы можете выбрать тот, который более понятен для Вас) заданных определений:
# 1st way
def on_get(self, req, resp, id=None):
...
# 2nd way (**kwargs catches all keywords args)
def on_get(self, req, resp, **kwargs):
id = kwargs.get('id')
Переданное поле будет передано по умолчанию как str
если вы хотите, чтобы он был преобразован соколом, вы можете использовать встроенный в сокол UUIDConverter
Вот документы для конвертера: https://falcon.readthedocs.io/en/stable/api/routing.html