request.json只返回字符串

时间:2017-12-01 01:37:10

标签: python json flask vue.js axios

我使用Axios和Flask开发RESTful API。

但是Axios和Flask之间的JSON数据存在问题。

我无法通过request.json从Axios获取JSON数据。

我尝试了很多方法,但没有任何作用。

大多数情况下,request.json会获得Nonerequest.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

以下是代码:

Axios公司

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'

我该如何解决? 谢谢。

2 个答案:

答案 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)