我正在尝试向我的Flask RESTful应用程序发出POST请求,在该应用程序中所有GET请求都可以正常响应,并且POST请求似乎可以正确答复(由Restlet客户端和curl测试),但是根据浏览器(chrome),它们失败(“加载失败:POST http://127.0.0.1:5000/login”)。
Python Flask RESTful代码:
login_parser = reqparse.RequestParser()
login_parser.add_argument('email', required=True, help="Es necesario un email")
login_parser.add_argument('password', required=True, help="Es necesaria una contraseña")
@app.route('/login', methods=['POST', 'GET'])
def login():
args = login_parser.parse_args()
try:
user = Usuario.query.filter_by(email=args.email).first()
if user and user.verify_password(args.password):
token = user.encode_auth_token(user.id)
if token:
responseObject = {'status': 'success', 'message':'Successfully logged in.', 'token': token.decode()}
return make_response(jsonify(responseObject)), 200
else:
responseObject = {'status': 'failed', 'message': 'Failed to login, usuario o contraseña incorrectos'}
return make_response(jsonify(responseObject)), 400
except Exception as e:
responseObject = {'status': 'failed', 'message': e}
return make_response(jsonify(responseObject)), 500
return "Vaya uno a saber"
反应提取代码:
login = (event) => {
event.preventDefault();
let formData = new FormData();
formData.append('email', this.state.username);
formData.append('password', this.state.password);
fetch(URL, {
method: 'post',
body: formData
})
.then(
response => response.json
).then(
json => {
console.log(json.token);
}
)
};
正如我所说,该api可以在除提取之外的所有客户端上工作,这给了我获得响应代码的机会(第一个“ then”中的response.status),但拒绝了获得json响应的机会,女巫必须是:
{'status':'成功','message':'成功登录。','token':THE TOKEN}
我真的为我的英语感到抱歉,但我正努力学习。从现在开始非常感谢您。 (我在StackOverflow中的第一个问题)
答案 0 :(得分:0)
应该是:
.then(
response => response.json() // .json() is a promise function
)