Angular:我无法为http帖子调用设置标题

时间:2019-11-21 08:44:51

标签: angular angular8

我试图从http post调用中设置标头,但是当我将其合并到日志中时,它的打印内容未定义。

我也尝试过使用params,但是没有设置。

callAddGroupAPI(formId, data){
    const headers = new Headers()
    .set('Content-Type', 'application/json');
    console.log(headers);
}

我希望控制台中的输出记录标头的值,但是它的输出未定义。

我也尝试过

callAddGroupAPI(formId, data){
    const headers = new Headers();
    headers.append('Content-Type','application/json');
    console.log(headers);
}

这也不起作用...

我在使用时遇到同样的问题

const data = new FormData();
data.set('key', 'value')
console.log(data)

我也使用了.append(),但这也不起作用。

3 个答案:

答案 0 :(得分:3)

这是您在帖子请求中设置标题的示例

create(custom: CustomObject): Observable<CustomObject> {
    const header = new Headers({ 'Content-Type': 'application/json' });
    return this.http.post(this.url, JSON.stringify(custom), { headers: header })....}

答案 1 :(得分:2)

您可以尝试以下方法:

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

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

httpOptions在您的帖子请求中作为参数传递

myRequest (item: Item): Observable<Item> {
  return this.http.post<Item>(yourUrl, item, httpOptions)
}

答案 2 :(得分:2)

要使用标题,请尝试

// define in your service.ts constructor
this.httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json', 'X-CSRFToken': csrf }),
};

// use 
this.http.post(yoururl, payload, this.httpOptions);

关于formdata,当您执行console.log()时,它只会打印FormData {},以访问key执行data.getAll('key')或使用data.forEach