使用 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&param2=value2 或者传递空值:http://127.0.0.1:5000/events?param=&param2=value1