如何使用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
相关产品推荐
相关产品推荐

