如果路由中有任何路径参数,我们如何在 falcon 中间件中获取路径参数?

How can we get path params in falcon middleware, if any path param in the route?

我的路线如下:

app.add_route('/v1/my_route', MyResource())
app.add_route('/v1/my_route/{app_id}', MyResource())
app.add_route('/v1/my_route2/any_route', AnyRouteResource())
app.add_route('/v1/my_route2/any_route/{app_id}', AnyRouteResource())

中间件类似于

class MyMiddleware(object):
    def process_request(self, req, resp):
        /** Here i want to get <app_id> value if it is passed **/

您可以从req获取请求对象的所有属性。例如,要获取资源的路径:

class MyMiddleware(object):
    def process_request(self, req, resp):
        path = req.path

        # process your path here

查看 docummentation 了解有关请求的更多信息。

如果你想直接获取app_id,只需要extend带参数的方法,falcon就可以了。

class MyMiddleware(object):
        def process_request(self, req, resp, params):
            app_id = params["app_id"]

基础中间件中有process_resource(self, req, resp, resource, params) 方法。您可以覆盖它。 params 是一个类似 dict 的对象,其中包含从 uri 模板字段中提取的参数。

https://falcon.readthedocs.io/en/stable/api/middleware.html