【问题标题】:How to set header to HttpHeaders in angular 5 [duplicate]如何在角度5中将标头设置为HttpHeaders [重复]
【发布时间】:2018-06-02 22:25:12
【问题描述】:

我正在尝试弄清楚如何处理 HttpHeaders 上的标头,以便通过 HttpClient 将它们用于 http 请求。

const headers = new HttpHeaders();
headers.append('foo', 'bar');
headers.set('foo', 'bar');

console.log(headers.get('foo')) // null

它只能这样工作:

const headers = new HttpHeaders().set('foo', 'bar');
console.log(headers.get('foo')) // bar

有没有特殊的方法来添加标题?或者它是一个错误?

【问题讨论】:

标签: angular xmlhttprequest http-headers angular5


【解决方案1】:

这对我有用:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';

const url = `https://sampleapi.com`;

@Injectable()
export class BasicService {
  private _headers = new HttpHeaders().set('Content-Type', 'application/json');
  constructor(private httpClient: HttpClient) { }

  getWithHeader(): Observable<any> {
    const headers = this._headers.append('foo', 'Bar');
    return this.httpClient.get<any>(url, { headers : headers });
  }
}

这从一个包含初始标头集的私有变量开始,使用set。然后在进行 Http 调用之前使用append 添加额外的标头。

请注意,append 返回一个 HttpHeaders 对象,这就是我将输出分配给 const 的原因。只是自己运行append,认为现有的_headers 将被更改,不会给你你可能期望的结果。我确实确认 HttpHeaders 是不可变的。

编辑:来自HttpHeaders 文档:一组不可变的 Http 标头,具有延迟解析。

【讨论】:

  • 我们可以在循环中使用 headers.append 从 json 数组中添加多个值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 2011-02-05
  • 2018-05-07
相关资源
最近更新 更多