从猎鹰中的参数化路径路径解析uuid

时间:2018-09-29 07:11:24

标签: python uuid falconframework

我有一个falcon应用,该应用带有用于获取资源的参数化路由。用户不知道资源的uuid,因为它是临时的,因此需要重定向。

用户将发出GET / transaction请求,并重定向到返回的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 个答案:

答案 0 :(得分:3)

好的。

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作为dafault传递。您可以使用猎鹰UUIDConverter中的内置函数

以下是转换器的文档:https://falcon.readthedocs.io/en/stable/api/routing.html#falcon.routing.UUIDConverter