使用 Flask-RESTful 检索查询参数
Retrieve query params with Flask-RESTful
我有一个烧瓶-RESTful 端点定义为:
class SearchEvents(Resource):
def get(self, name, start_date, end_date):
#do stuff
api.add_resource(endpoints.SearchEvents, '/events/<string:name>/<string:start_date>/<string:end_date>')
我正在用 Postman 手动测试它。我想为 start_date 和 end_date 传递空值。然而:
我尝试将 url 修改为:
http://127.0.0.1:5000/events/test/ / #<--Spaces
和
http://127.0.0.1:5000/events/test/""/""
无果。
您传递的值不在查询字符串中。您正在使用路线部分作为参数,因此除非您提供 /events/some_name/2019-86-98/2100-9885-24515
形式的内容,否则路线不会匹配。你所做的尝试被 flask 捕获为不匹配的路由,你得到 404 未找到。
要将这些参数作为查询字符串的一部分发送,将使用类似
/events?name=some_name&start_date=2019-86-98&end_date=2100-9885-24515
并在路由处理程序中获取值,您应该使用 name = request.args.get('name')
等等。传递空值意味着点击相同的 url 但没有查询参数。
最终通过使用 flask-restful request
对象解决了这个问题,它有一个 args
属性 从请求中检索查询参数 url:
from flask_restful import request #import request from flask restful
class SearchEvents(Resource):
def get(self):
args = request.args #retrieve args from query string
api.add_resource(endpoints.SearchEvents, '/events')
然后提出如下请求:http://127.0.0.1:5000/events?param1=value1¶m2=value2
或者传递空值:http://127.0.0.1:5000/events?param=¶m2=value1
我有一个烧瓶-RESTful 端点定义为:
class SearchEvents(Resource):
def get(self, name, start_date, end_date):
#do stuff
api.add_resource(endpoints.SearchEvents, '/events/<string:name>/<string:start_date>/<string:end_date>')
我正在用 Postman 手动测试它。我想为 start_date 和 end_date 传递空值。然而:
http://127.0.0.1:5000/events/test/ / #<--Spaces
和
http://127.0.0.1:5000/events/test/""/""
无果。
您传递的值不在查询字符串中。您正在使用路线部分作为参数,因此除非您提供 /events/some_name/2019-86-98/2100-9885-24515
形式的内容,否则路线不会匹配。你所做的尝试被 flask 捕获为不匹配的路由,你得到 404 未找到。
要将这些参数作为查询字符串的一部分发送,将使用类似
/events?name=some_name&start_date=2019-86-98&end_date=2100-9885-24515
并在路由处理程序中获取值,您应该使用 name = request.args.get('name')
等等。传递空值意味着点击相同的 url 但没有查询参数。
最终通过使用 flask-restful request
对象解决了这个问题,它有一个 args
属性 从请求中检索查询参数 url:
from flask_restful import request #import request from flask restful
class SearchEvents(Resource):
def get(self):
args = request.args #retrieve args from query string
api.add_resource(endpoints.SearchEvents, '/events')
然后提出如下请求:http://127.0.0.1:5000/events?param1=value1¶m2=value2
或者传递空值:http://127.0.0.1:5000/events?param=¶m2=value1