Angular2 - HTTP RequestOptions HEADERS

问题描述 投票:70回答:4

我目前对tslint有一个问题,希望有人能指出我正确的方向。

我正在尝试使用Angular2框架提供的HTTP发送HTTP GET请求。有了这个请求,我必须指定内容类型和承载认证令牌。

我的代码示例:

let headers = new Headers();
let authToken = this._user.getUser().JWT;
headers.append('Content-Type', 'application/json');
headers.append('Authorization', `Bearer ${authToken}`);
let options = new RequestOptions({ headers: headers });

this._http.get('http://' + url '/', options)
            .timeout(3000)
            .subscribe(
                (res) => {

然而,这是有效的,tslint抱怨说

“TS2345:类型'{headers:Headers;}'的参数不能分配给'RequestOptionsArgs'类型的参数。属性'headers'的类型是不兼容的。类型'Headers'不能分配给'Headers'类型。两种不同的类型存在此名称,但它们不相关。“标题”类型中缺少属性“键”。

我很感谢这种支持。

angular http typescript tslint
4个回答
200
投票

更新

截至今天,@angular/http一直是deprecated,应该使用@angular/common/http代替。因此,使用http标头的最佳方法是导入import { HttpHeaders } from '@angular/common/http';documentation)。

老答案

你应该导入的Headers类型是import { Headers } from '@angular/http';

检查你的进口


8
投票

您必须通过以下方式更新标头:

let headers =  {headers: new  HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded'})};

5
投票

Angular 5的更新

import { RequestOptions } from '@angular/http';

我在正确答案的评论中找到了这个,所以如果这有助于某人,祝你好运。

文档:https://angular.io/api/http/RequestOptions


2
投票

//内容类型Json的标头示例

import { Http, Headers, RequestOptions } from '@angular/http';

const Url = 'http://localhost:3000/';
const headers = new Headers;
const body = JSON.stringify({
title: "data" 
});
headers.append('Content-Type', 'application/json');
this.http.post(Url, body, { headers: headers })
.pipe(map((res => res)));
© www.soinside.com 2019 - 2024. All rights reserved.