POST 获取请求返回 400(阅读问题)
POST request on fetch is returning a 400 (read question)
我有一个问题。
我正在为 JS 使用 fetch
API,并试图向服务器发送 POST 请求。但是,服务器以 400 或“错误请求”响应。有问题的服务器是一个烧瓶网络服务器。
代码:
fetch('https://webserver.com/post', {
method: "POST",
body: JSON.stringify(data)
})
.then(alert('Post created!'))
其中 data
是一个全局变量,其中包含我要在请求中发送的数据。
服务器代码(在Python):
@app.route('/post', methods=['POST'])
def newpost():
data1 = request.form['data1']
data2 = request.form['data2']
data3 = request.form['data3']
if data1 in list(db.keys()):
resp = Response('error')
else:
db[data1] = [data2, data3]
resp = Response('Success')
resp.headers['Access-Control-Allow-Origin'] = '*'
print('yep we got a post request')
return resp
这里,db
是我的数据库。
应该发生的是服务器发回 200,并将数据保存在数据库中。有谁知道我为什么得到 400,以及如何解决它?
Flask 可能对内容类型很挑剔,因此最好指定 Content-Type
header。此外,request.form
适用于 HTML 表单,但您发送的是 JSON,所以您正在寻找类似于:
fetch('https://webserver.com/post', {
method: "POST",
body: JSON.stringify(data),
cache: "no-cache",
headers: new Headers({
"Content-Type": "application/json"
})
})
.then(alert('Post created!'))
在 JS 方面。
对于您的 Flask 应用:
@app.route('/post', methods=['POST'])
def newpost():
data0 = request.get_json()
data1 = data0['data1']
data2 = data0['data2']
data3 = data0['data3']
if data1 in list(db.keys()):
resp = Response('error')
else:
db[data1] = [data2, data3]
resp = Response('Success')
resp.headers['Access-Control-Allow-Origin'] = '*'
print('yep we got a post request')
return resp
这假设您发送的 JSON data
包含属性 data1
、data2
和 data3
我有一个问题。
我正在为 JS 使用 fetch
API,并试图向服务器发送 POST 请求。但是,服务器以 400 或“错误请求”响应。有问题的服务器是一个烧瓶网络服务器。
代码:
fetch('https://webserver.com/post', {
method: "POST",
body: JSON.stringify(data)
})
.then(alert('Post created!'))
其中 data
是一个全局变量,其中包含我要在请求中发送的数据。
服务器代码(在Python):
@app.route('/post', methods=['POST'])
def newpost():
data1 = request.form['data1']
data2 = request.form['data2']
data3 = request.form['data3']
if data1 in list(db.keys()):
resp = Response('error')
else:
db[data1] = [data2, data3]
resp = Response('Success')
resp.headers['Access-Control-Allow-Origin'] = '*'
print('yep we got a post request')
return resp
这里,db
是我的数据库。
应该发生的是服务器发回 200,并将数据保存在数据库中。有谁知道我为什么得到 400,以及如何解决它?
Flask 可能对内容类型很挑剔,因此最好指定 Content-Type
header。此外,request.form
适用于 HTML 表单,但您发送的是 JSON,所以您正在寻找类似于:
fetch('https://webserver.com/post', {
method: "POST",
body: JSON.stringify(data),
cache: "no-cache",
headers: new Headers({
"Content-Type": "application/json"
})
})
.then(alert('Post created!'))
在 JS 方面。
对于您的 Flask 应用:
@app.route('/post', methods=['POST'])
def newpost():
data0 = request.get_json()
data1 = data0['data1']
data2 = data0['data2']
data3 = data0['data3']
if data1 in list(db.keys()):
resp = Response('error')
else:
db[data1] = [data2, data3]
resp = Response('Success')
resp.headers['Access-Control-Allow-Origin'] = '*'
print('yep we got a post request')
return resp
这假设您发送的 JSON data
包含属性 data1
、data2
和 data3