gpt4 book ai didi

rest - 我如何在 Angular 2 中发布 JSON?

转载 作者:太空狗 更新时间:2023-10-29 16:51:32 25 4
gpt4 key购买 nike

我不明白我做错了什么,当我尝试获取 json 时,我的服务器返回“未定义”。

POST(url, data) {
var headers = new Headers(), authtoken = localStorage.getItem('authtoken');
headers.append("Content-Type", 'application/json');

if (authtoken) {
headers.append("Authorization", 'Token ' + authtoken)
}
headers.append("Accept", 'application/json');

var requestoptions = new RequestOptions({
method: RequestMethod.Post,
url: this.apiURL + url,
headers: headers,
body: data
})

return this.http.request(new Request(requestoptions))
.map((res: Response) => {
if (res) {
return { status: res.status, json: res.json() }
}
});
}

还有我的功能:

login(username, password) {
this.POST('login/', {test: 'test'}).subscribe(data => {
console.log(data)
})
}

当我尝试这样做时,请求正文如下所示:

enter image description here

因此它没有发送实际的 json,而是发送“[object Object]”。而不是“请求有效负载”,它应该是“JSON”。我做错了什么?

最佳答案

一段时间以来,我一直在寻找在 Angular 中发布 json 数据的问题的直观答案,但无济于事。现在我终于有了一些工作,让我们分享一下:

内联

假设您需要 T 类型的 json 响应正文。

const options = {headers: {'Content-Type': 'application/json'}};
this.http.post<T>(url, JSON.stringify(data), options).subscribe(
(t: T) => console.info(JSON.stringify(t))
);

Official doc

可扩展类

import { HttpClient, HttpHeaders } from '@angular/common/http';

export class MyHttpService {
constructor(protected http: HttpClient) {}

headers = new HttpHeaders({
'Content-Type': 'application/json'
});

postJson<T>(url: string, data: any): Observable<T> {
return this.http.post<T>(
url,
JSON.stringify(data),
{headers: this.headers}
)
}

要点

一开始我错过了这种传递内容类型的“嵌套”方式:

{headers:{'Content-Type': 'application/json'}}

关于rest - 我如何在 Angular 2 中发布 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37051476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com