我有一个由以下内容定义的烧瓶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/""/""
无济于事。
答案 0 :(得分:3)
最终通过使用烧瓶稳定的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
答案 1 :(得分:1)
您传递的值不在查询字符串中。您正在使用路径部件作为参数,因此除非您提供/events/some_name/2019-86-98/2100-9885-24515
形式的某些内容,否则路线不会匹配。你所做的尝试被烧瓶作为不匹配的路线捕获,而你找不到404。
要将这些参数作为查询字符串的一部分发送,将使用类似的内容
/events?name=some_name&start_date=2019-86-98&end_date=2100-9885-24515
并且要获取路由处理程序中的值,您应该使用name = request.args.get('name')
,依此类推。传递空值则意味着点击相同的URL但没有查询参数。