首页 > 解决方案 > 有没有办法在 Falcon 的单个类资源下添加多个 on_get 方法?

问题描述

如果假设我们想在单个类资源中实现以下端点,有没有办法在单个资源中放置多个on_get方法来区分每个端点?因为将它们归为单一类是有意义的,因为它们非常密切相关。

可能的终点:

/api/{id}

/api/v1/{id}

/api/{id}/附加

/api/v1/附加/{id}

标签: python-3.xapifalconframework

解决方案


是的,在 Falcon 2.0 中,该add_route方法支持suffix关键字参数,允许您将单个资源类用于多个端点。一些示例代码:

class UserResource:

    def on_get(self, req, resp):
        resp.media = self.repository.find_all()

    def on_get_single(self, req, resp, user_id):
        resp.media = self.repository.find_user(user_id)


resource = UserResource()

api = falcon.API()
api.add_route('/users', resource)
api.add_route('/users/{user_id}', resource, suffix='single')

从文档falcon.API.add_route

如果提供后缀,Falcon 会将 GET 请求映射到 on_get_{suffix}(),将 POST 请求映射到on_post_{suffix}()等。这样可以将多个密切相关的路由映射到同一个资源。例如,单个资源类可以使用后缀响应器来区分对单个项目的请求与对这些相同项目的集合的请求。

如果您想在 Falcon 的文档中看到有关此用法的另一个相关示例,请在此处阅读


推荐阅读