Flask - 使用cURL使用json参数获取请求

问题描述 投票:0回答:1

我使用python库qazxsw poi开发了一个简单的REST API。这是我正在做的一个例子:

flask

为了测试我的代码,我用这种方式编写了一个python客户端:

from flask import Flask, request
import json

app = Flask(__name__)

@app.route("/")
def hello():
    json_arg = json.loads(request.args.get("json_arg", None))
    non_json_arg = request.args.get("non_json_arg", None)
    return "Hello, your json arg is: %s and your non_json_arg is %s"%(json_arg, non_json_arg)


if __name__ == '__main__':
    app.run(debug=True)

这很好用,输出是:

import requests
import json

json_arg = [
            {
                "0": 1.3,
                "1": 1.4
            },
            {
                "0": 5.3,
                "1": 40.5
            }
        ]
non_json_arg = "some_arg"

arguments = {
    "json_arg": json.dumps(json_arg),
    "non_json_arg": non_json_arg
}

r = requests.get("http://localhost:5000", params=arguments, headers={"content-type": "application/json"})

print(r.text)

出于测试原因,我想用cURL做同样的事情,到目前为止我测试的是:

Hello, your json arg is: [{u'1': 1.4, u'0': 1.3}, {u'1': 40.5, u'0': 5.3}] and your non_json_arg is some_arg

但是这会返回一个错误:

curl -X GET --data '{"json_arg": [ { "0": 1.3, "1": 1.4 }, { "0": 5.3, "1": 40.5 } ], "non_json_arg":"some_arg"}' http://localhost:5000

我已经测试了很多.... >> json_arg = json.loads(request.args.get("json_arg", None)) TypeError: expected string or buffer 的其他论点,但我找不到这个简单问题的答案:

如何使用json参数向API发送GET请求?

python rest api curl flask
1个回答
0
投票

通常,人们会使用POST请求而不是get请求。所以它看起来像这样:

cURL

但是,如果您确实想要使用GET请求,则需要在实际URL中使用params,因此它看起来像:

curl -X POST -d '{"json_arg": [ { "0": 1.3, "1": 1.4 }, { "0": 5.3, "1": 40.5 } ], "non_json_arg":"some_arg"}' http://localhost:5000

我建议通常会使用POST请求发送JSON数据。

© www.soinside.com 2019 - 2024. All rights reserved.