我正在开发一个 API 包装器。我正在尝试构建的规范中有以下请求:
curl -H "Content-type:application/json" -X POST -d data='{"name":"Partner13", "email":"example@example.com"}' http://localhost:5000/
这个请求从我设置的一个小测试服务器产生以下响应,以查看发送的标头/参数等。这个小脚本产生:
uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data={"name":"Partner13", "email":"example@example.com"}
所以上面是我希望我的 python 脚本在遇到小测试脚本时创建的结果。
我正在使用 python requests 模块,这是我用过的最漂亮的 HTTP 库。所以这是我的python代码:
uri = "http://localhost:5000/"
headers = {'content-type': 'application/json' }
params = {}
data = {"name":"Partner13", "email":"example@exmaple.com"}
params["data"] = json.dumps(data)
r = requests.post(uri, data=params, headers=headers)
这么简单的东西。设置标题,并为 POST 参数创建字典。该字典有一个名为“数据”的条目,它是我要发送到服务器的数据的 JSON 字符串。然后我打电话给邮局。但是,我的小测试脚本返回的结果是:
uri: http://localhost:5000/,
method: POST,
api_key: None,
content_type: application/json,
params: None,
data: data=%7B%22name%22%3A+%22Partner13%22%2C+%22email%22%3A+%22example%40example.com%22%7D
所以本质上我想在data参数下发送的json数据已经被urlendcode了。
有谁知道如何解决这一问题?我查看了请求文档,似乎找不到不自动对发送数据进行 urlencode 的方法。
非常感谢,凯文