我使用Axios和Flask开发RESTful API。
但是Axios和Flask之间的JSON数据存在问题。
我无法通过request.json
从Axios获取JSON数据。
我尝试了很多方法,但没有任何作用。
大多数情况下,request.json
会获得None
,request.data
会获得:
b'------WebKitFormBoundaryNzW4jnyUkdEH3jsX\r\nContent-Disposition: form-data; name="user"\r\n\r\nu\r\n------WebKitFormBoundaryNzW4jnyUkdEH3jsX\r\nContent-Disposition: form-data; name="pwd"\r\n\r\np\r\n------WebKitFormBoundaryNzW4jnyUkdEH3jsX--\r\n'
调试后,request.json
可以立即获取数据。
但它只能获得string
,而不是json
。
以下是代码:
var config = {headers: {'Content-Type': 'application/json'}}
axios.post('/api/user', {user: 'user', pwd: 'pwd'}, config)
.then(function(resp) {
// ...
})
.catch(function(error) {
// ...
});
@app.route('/api/user', methods=['POST'])
def user():
j = request.json
print(j)
print(type(j))
{"user": "user", "pwd": "pwd"}
class 'str'
我该如何解决? 谢谢。
答案 0 :(得分:0)
您希望改为使用get_json()
。根据烧瓶文档here,它表示不使用json
,而是使用get_json()
。
答案 1 :(得分:0)
似乎来自Axios,你不知何故将你的json作为一个字符串发送 作为一种解决方法,从烧瓶方面,您可以将字符串化的json转换为字典。
import json
@app.route('/api/user', methods=['POST'])
def user():
j = json.loads(request.json)