Необходимо получить значение свойства Header из HttpClient в Angular - PullRequest
1 голос
/ 09 июля 2019

Необходимо получить значение из заголовка.Необходимо получить значение свойства X-Count, используя angular.В моем коде есть ошибки

Код сервера

@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<OrderDTO>> getAllOrders(){
    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.add("X-Count",String.valueOf(orderService.ordersCount()));
    httpHeaders.setAccessControlAllowHeaders(Arrays.asList("X-Count"));
    httpHeaders.setAccessControlExposeHeaders(Arrays.asList("X-Count"));
    return new ResponseEntity<List<OrderDTO>>(orderService.getAllOrders(),httpHeaders,HttpStatus.OK);
}

Каталог услуг

getOrderCount(): Observable<any> { return this.httpClient.get<any>(this.BASE_URL); }

Каталог компонентов

this.placeOrderService.getOrderCount().subscribe(count => {
  console.log(count.headers.get('X-Count'));
}, error1 => {
  console.log(error1);
});

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Тело ответа не возвращает все данные, которые вам могут понадобиться.Иногда серверы возвращают специальные заголовки или коды состояния, чтобы указать определенные условия, которые важны для рабочего процесса приложения.

Скажите HttpClient, что вы хотите получить полный ответ с параметром наблюдения

getOrderCount(): Observable<any> {
  return this.httpClient.get<any>(this.BASE_URL, { observe: 'response' });
}

Теперь HttpClient.get () возвращает Observable типизированного HttpResponse, а не только данные JSON.

(Источник: docs )

0 голосов
/ 09 июля 2019

Вам также необходимо наблюдать за реакцией, подобной этой:

getOrderCount() : Observable<HttpResponse<any>>{
    return this.http.get<HttpResponse<any>>(this.BASE_URL, {observe: 'response'}).pipe(
         tap(response=> console.log('headers', response.headers))
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...