我有一个falcon应用程序,它带有获取资源的参数化路径用户不知道资源的uuid,因为它是临时的,所以需要重定向。
用户将发出GET/transaction请求,并重定向到302 found response的返回路径。
如何从请求路径解析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

最佳答案

好吧。
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')

passed字段将是dafault passed asstr如果您想让falcon转换它,可以在falconUUIDConverter中使用内置的
这里是转换器的文档:https://falcon.readthedocs.io/en/stable/api/routing.html#falcon.routing.UUIDConverter

10-07 15:05