首页 > 解决方案 > 使用 curl 测试烧瓶休息。具有多个查询参数的 GET 请求

问题描述

我正在使用 Flask 框架来创建其余的 API。下面的代码是我写的其余部分。

@app.route("/posts/v2/list_by_date", methods=['GET'])
def public_posts_list_by_date():
    tracker_id = request.args.get('tracker_id')
    advanced_filters = request.args.get('filters')


    if advanced_filters:
        advanced_filters = json.loads(advanced_filters)
    else:
        advanced_filters = {}

“过滤器”是一个参数数组,例如 start_date、limit、offset、end_date。

我想测试其余的,我用这个命令来测试它:

curl http://172.31.32.22:3100/posts/v2/list_by_date?tracker_id=6939&filters=start_date=2020-11-30T15:05:05&end_date=2021-01-20T15:05:05

问题是我没有收到烧瓶中过滤器的参数,它总是空的。我尝试了上述命令和许多其他 curl 命令但仍然没有发送过滤器参数。

标签: apirestflaskcurl

解决方案


使用参数--data-urlencode预先对数据进行编码。
另请参见此处

curl -G "http://172.31.32.22:3100/posts/v2/list_by_date" \
     --data-urlencode 'tracker_id=6939' \
     --data-urlencode 'filters={"start_date":"2020-11-30T15:05:05", "end_date":"2021-01-20T15:05:05"}'

推荐阅读