You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Flask和PyMongo从URL路径获取ID参数

Flask中通过URL路径参数获取图书ID(替代查询参数方式)

Flask支持路由变量规则,和你熟悉的Express里req.params用法逻辑一致——只需在路由路径中用<变量名>的形式定义参数,Flask会自动把URL对应位置的值传递给视图函数的同名参数。

修改你的代码如下:

视图函数修改

@book.route('/<string:book_id>', methods=['GET'])
def find_one_book(book_id):
    response = get_book(book_id)
    return response

数据查询函数(无需修改)

def get_book(data):
    books = db.books
    result = books.find_one({'_id': data})
    return jsonify(result)

关键说明

  • 路由中的<string:book_id>:表示捕获/books/后面的字符串内容,将其命名为book_id参数。string是类型约束,确保捕获的是字符串(如果不指定类型,默认也是字符串)
  • 视图函数直接接收book_id参数,无需再通过request.args.get()获取查询参数
  • 现在访问http://localhost:5000/books/abc时,URL中的abc会被自动传递给book_id,用于查询MongoDB中_id为abc的图书文档

如果你的图书ID包含斜杠这类特殊字符,可以改用<path:book_id>,它会匹配任意字符(包括斜杠),而默认的string类型不会匹配斜杠。

内容的提问来源于stack exchange,提问作者MintedFairy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:06:22