【发布时间】:2017-03-09 20:31:05
【问题描述】:
在我的 Angular 2 应用程序中,我尝试使用 Http (@angular/http) 向我的 API 发出请求。为了使这些请求正常工作,我需要将某些标头添加到我向 API 发出的每个请求中(包括 JWT 标头)。
我想做的是有一个 API 类来处理创建 Http 请求以及一些错误处理和验证等。
然而,事实证明,我不能使用 API 类中的 Http 类,因为它会出现以下错误;
user.service.ts
import { Injectable } from '@angular/core';
import {User} from "../models/User";
import {API} from "../API";
import {Http} from "@angular/http";
@Injectable()
export class UserService
{
constructor (private http : Http) {}
getProfile (user : User)
{
let api = new API (this.http);
return api.doRequest ('/user/' + user.id + '/profile');
}
}
API.ts
import {Http, Headers, RequestOptions} from '@angular/http';
export class API
{
...
constructor (private http : Http) {}
doRequest (url : string, method : string, data?)
{
let headers = {...};
let options = new RequestOptions ({ headers: new Headers (headers), ... } );
return this.http.get (url, data, options)
.catch ((error) => { ... } );
}
}
但是,直接从 UserService 使用 Http 会更好。
有没有办法解决这个问题,或者有更好的方法来达到预期的结果?我应该扩展 Http 吗?
【问题讨论】:
-
有什么原因你不能只在 API 类中使用 http,而根本不传递它(这看起来有点奇怪,我认为传递一个注入服务的实例...为什么不将其注入将要使用它的类)?你不需要调用 API.doRequest 吗?
标签: javascript angular typescript angular2-services angular2-http