Angular4从Http迁移到HttpClient - 使用凭据

时间:2017-11-20 13:42:24

标签: angular

我们在角度使用HttpModule。

现在我们转移到HttpClient,因为我们听说最好使用它。

一切正常,但是 - 当我们使用HttpModule时,我们有这段代码让chrome将凭证发送到服务器。

axis

我们不得不在第一次服务中写这个,而我们所有的服务都使用凭证。

现在,如果我们使用HttpClient,我们无法“转换”此代码。

我们知道我们可以在每个电话中发送withCredentials:true,但我们想要的东西就像我们拥有的那样,一个地方足以支持所有电话。

如果使用HttpClient,上面的并行代码是什么?

1 个答案:

答案 0 :(得分:1)

所以,最后我们刚刚创建了一个基本服务,所有服务都使用这个服务。

基本服务:

@Injectable()
export class BaseService{
   options:any;

   constractor(private http:HttpClient){
       this.options = new HttpHeaders().set('Content-Type', 'application/json');
   }

   get(url){
      return this.http.get(url,{withCredentials:true})
           .catch(err => err);
   }

   post(url, obj){
      return this.http.post(url, obj, {headers: this.options, withCredentials:true})
           .catch(err => err);
   }
}

在服务中使用基本服务的示例:

@Injectable()
export class CarService{

   constractor(private baseService:BaseService){}

   getCarDetails(carNumber:number){
       let url = `${BASE_URL}/GetCar/${carNumber}`;
       return this.baseService.get(url);
   }

   updateCar(carDetails:Car){
       let url = `${BASE_URL}/UpdateCar`;
       return this.baseService.post(url, carDetails);
   }
}