首页 > 解决方案 > 需要从 Angular 中的 HttpClient 获取 Header 属性值

问题描述

需要从标题中获取价值。需要使用角度获取 X-Count 属性值。我的代码有一些错误

后端代码

@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);
});

标签: angular

解决方案


响应正文不会返回您可能需要的所有数据。有时服务器会返回特殊的标头或状态代码,以指示对应用程序工作流很重要的某些条件。

告诉 HttpClient 您想要使用观察选项的完整响应

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

现在 HttpClient.get() 返回一个类型化的 HttpResponse 的 Observable 而不仅仅是 JSON 数据。

(来源:文档


推荐阅读