使用Flask-RESTful检索查询参数

Tob*_*eed 2 query-string flask flask-restful postman

我有一个flask-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>')
Run Code Online (Sandbox Code Playgroud)

我正在用邮递员手动测试它。我想传递start_date和end_date的空值。然而:

邮递员界面的屏幕截图 我尝试将网址修改为:

http://127.0.0.1:5000/events/test/ /  #<--Spaces
Run Code Online (Sandbox Code Playgroud)

http://127.0.0.1:5000/events/test/""/""
Run Code Online (Sandbox Code Playgroud)

无济于事。

Tob*_*eed 6

最终通过使用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')
Run Code Online (Sandbox Code Playgroud)

然后发出如下请求:http://127.0.0.1:5000/events?param1=value1&param2=value2 或传递空值:http://127.0.0.1:5000/events?param=&param2=value1

  • 这个最上面的答案是有缺陷的。我想知道变量“args”的类型,如“args = request.args”。如何使用它?它是一个字典还是一个包含每个参数属性的类?等等。读者需要尝试调试或挖掘文档,然后通过反复试验对类型充满信心,而不是已经知道它。 (2认同)