gpt4 book ai didi

python - 覆盖 Flask add_url_rule 以路由特定的 URL

转载 作者:行者123 更新时间:2023-11-28 22:54:43 25 4
gpt4 key购买 nike

我在 Flask 中使用基于类的 View 来创建 CRUD REST API 并使用 add_url_rule 注册路由,就像这样...

class GenericAPI(MethodView):
def get(self, item_group, item_id):
...
def post(self, item_group, item_id):
...
...

api_view = GenericAPI.as_view('apps_api')
app.add_url_rule('/api/<item_group>', defaults={'item_id': None},
view_func=api_view, methods=['GET',])
app.add_url_rule('/api/<item_group>/<item_id>',
view_func=api_view, methods=['GET',])
app.add_url_rule('/api/<item_group>/add',
view_func=api_view, methods=['POST',])
app.add_url_rule('/api/<item_group>/<item_id>/edit',
view_func=api_view, methods=['PUT',])
app.add_url_rule('/api/<item_group>/<item_id>/delete',
view_func=api_view, methods=['DELETE',])

它处理基于 item_group 的特定数据库表和使用 item_id 的条目。因此,如果我有 /api/person,它将列出 person 表的条目。或者,如果我有 /api/equipment/2,它将检索设备表中 ID 为 2 的行。我有很多这样的任务,它们基本上都只需要 CRUD。

但是如果我想在我有一些其他 URL 时覆盖我的路由,比如 /api/analysis/summarize 理论上会调用一个执行即时工作的函数。有没有办法做到这一点?

或者是将我的 URL 扩展到 /api/db/person/api/db/equipment/2 用于一组操作和 的唯一方法/api/other_work_type 用于其他人?

最佳答案

可以正常注册/api/analysis/summarize。 Werkzeug/Flask 按复杂性(变量的数量)对规则进行排序,首先采用最简单的路线。

例如:

@app.route('/api/foo')
def foo():
return "Foo is special!"

@app.route('/api/<name>')
def generic(name):
return "Hello %s!" % name

独立于您定义路由的顺序。

关于python - 覆盖 Flask add_url_rule 以路由特定的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17759563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com