我将Bottle用于后端,将Angular2用于前端。使用POST请求时,我想返回一个响应,但是由于某种原因,它不返回响应
Python代码:
@app.post("/api/post/new_post")
def hp_new_post():
pd = json.loads(request.body.read().decode("utf-8"))
try:
cl.eduo.posts.insert_one(
{
"h": pd['h'],
"d": pd['d'],
"t": pd['t']
}
)
except Exception:
response.status = 500
response.content_type = 'application/json'
response.status = 200
return response
角码:
var result = from(
fetch(
this.baseurl,
{
body: JSON.stringify(
{
"h": h,
"d": des,
"t": Date.now()
}),
headers: {
'Content-Type': 'application/json',
},
method: 'POST',
mode: 'no-cors'
}
)
).subscribe(
{
next(data) {
console.log(data);
},
error(msg) {
console.log(msg);
}
}
)
当我从请求获得console.log数据时,我得到:
body: null
bodyUsed: false
headers: Headers { }
ok: false
redirected: false
status: 0
statusText: ""
type: "opaque"
url: ""
我建议您使用HttpClient
。为此,导入HttpClientModule
,您的代码可能是:
constructor(private httpClient: HttpClient) {}
load() {
this.http.post(this.baseurl, {
"h": h,
"d": des,
"t": Date.now()
}, {
observe: 'response',
headers: new HttpHeaders({
'Content-Type': 'application/json'
}
}).subscribe(response => {
// do stuff with body
// response.body
// this will output headers received
const keys = response.headers.keys();
const headers = keys.map(key =>
`${key}: ${response.headers.get(key)}`);
console.table(headers);
})
}
如果您不需要response
详细信息,而只收到body
:
this.http.post<MyData>(this.baseurl, {
"h": h,
"d": des,
"t": Date.now()
}).subscribe(data => {
// do stuff with data of type MyData
data.name...
});
关于Angular official docs的更多详细信息。