Как получить заголовок ответа, используя угловой - PullRequest
0 голосов
/ 20 ноября 2018

Компонент:

ниже мой компонент, где я вызываю функцию checkAuthentication (), которая присутствует в сервисе.

signIn() {
    this.loginService.checkAuthentication(this.login).subscribe(
      (resp) => {
        console.log(resp.headers);
        let user = resp.headers.get('info');
        localStorage.setItem('user', JSON.stringify(user));

        let token = resp.headers.get('x-token');
        localStorage.setItem('x-token', token);

        this.router.navigate(['/list']);
      },

      (error) => {
        this.login = new Login();
        console.log(error.error.message);
        Swal(error.error.message, 'Try again.', 'error');
      }
    );
  }

Сервис:

Это мой сервис, здесь я звоню отдыхать API.в оставшейся части api я отправляю заголовок

constructor(private http:HttpClient) { }

  checkAuthentication(login): Observable<any> {
      let path = Constant.BASE_URL + 'api/login';
      const header = {
        headers : new HttpHeaders({
          'Content-Type': 'application/json'
        })
      };

      return this.http.post(path, login, header);
  }

Ниже изображение заголовка ответа, который я получаю в браузере.enter image description here

console.log(resp.headers); показывает undefined

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Я изменил свой сервис на ниже.Объединив ответ @Biplab Malakar и комментарий @trichetriche.сейчас работает

checkAuthentication(login: Login): Observable<any> {
    let path = Constant.BASE_URL + 'api/login';

    return this.http.post(path, login, {
      headers: new HttpHeaders()
        .set('Content-Type', 'application/json'),
      observe: 'response'
    }).map((res) => res);
  }
0 голосов
/ 20 ноября 2018

Вам нужно отфильтровать ваш ответ

constructor(private http:HttpClient) { }
    checkAuthentication(login): Observable<any> {
          let path = Constant.BASE_URL + 'api/login';
          const header = {
            headers : new HttpHeaders({
              'Content-Type': 'application/json'
            })
          };

          return this.http.post(path, login, header).map((res:Response)=> res);
      }

Теперь в подписке у вас есть полный ответ с заголовком и телом.Теперь вы можете извлечь заголовок как

 signIn() {
    this.loginService.checkAuthentication(this.login).subscribe(
      (resp) => {
        console.log(resp.headers);
        let user = resp.headers.get('info');
        localStorage.setItem('user', JSON.stringify(user));

        let token = resp.headers.get('x-token');
        localStorage.setItem('x-token', token);

        this.router.navigate(['/list']);
      },

      (error) => {
        this.login = new Login();
        console.log(error.error.message);
        Swal(error.error.message, 'Try again.', 'error');
      }
    );
  }
...