首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将报头附加到某些路由,而不是所有路由

如何将报头附加到某些路由,而不是所有路由
EN

Stack Overflow用户
提问于 2018-06-01 04:17:12
回答 1查看 40关注 0票数 0

我正在尝试将我的angular Http和头文件更新为angular 4 HttpClient和HttpHeaders模块。我遇到的问题是,我只想向一个或两个路由添加身份验证头,而不是我的所有路由。我找到的许多教程只向我展示了如何更新所有路由的headers,而我并不完全理解angular.io headers api来更新我的代码。

我的旧代码

代码语言:javascript
复制
import { Http, Headers } from '@angular/http';

constructor(private http: Http) { }

  authenticateUser(user) {
    let headers = new Headers();
    headers.append('Content-Type', 'application/json');
    return this.http.post('http://localhost:3000/users/authenticate', user, { headers: headers });
      .map(res => res.json());
  }

  getProfile() {
    let headers = new Headers();
    this.loadToken();
    headers.append('Authorization', this.authToken);
    headers.append('Content-Type', 'application/json');
    return this.http.get('http://localhost:3000/users/profile', { headers: headers });
      .map(res => res.json());

新代码

代码语言:javascript
复制
import { HttpClient, HttpHeaders } from '@angular/common/http';

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

constructor(private http: HttpClient) { }

  authenticateUser(user) {
    return this.http.post('http://localhost:3000/users/authenticate', user, httpOptions);
  }

  getProfile() {
    this.loadToken();
    headers.append('Authorization', this.authToken);  <---- not sure what to do with this    
    return this.http.get('http://localhost:3000/users/profile', httpOptions);
EN

回答 1

Stack Overflow用户

发布于 2018-06-01 04:25:25

每次使用工厂函数创建httpOptions,并向其传递参数以定义需要哪些标头。

代码语言:javascript
复制
private getOptions(authToken?: string) {
   const httpOptions = {
        headers: new HttpHeaders({ 'Content-Type': 'application/json' })
   };
   if(authToken) {
       httpOptions.headers.append('Authorization', authToken);
   }
   return httpOptions;
}

authenticateUser(user) {
     return this.http.post('http://localhost:3000/users/authenticate', user, this.getOptions()).map(res => res.json());
}

getProfile() {
    const token = this.loadToken();
    return this.http.get('http://localhost:3000/users/profile', this.getOptions(token));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50632147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档