You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LoopBack 4中通过Rest连接器获取Response Header响应头

LoopBack 4 调用外部API获取响应头方案

LB4 默认调用外部接口时仅返回响应体内容,要获取响应头可根据你的调用方式选择对应修改方案:

1. 使用官方REST服务代理调用(@serviceProxy注入)

默认的服务代理仅返回响应体,你需要在调用时传入includeHeaders参数开启全响应返回:

  • 首先修改服务接口定义,适配返回结构:
// 原有服务接口定义
interface ExternalApiService {
  getInfo(params: Record<string, any>): Promise<InfoBody>;
}

// 修改后支持返回头的定义
interface ExternalApiService {
  getInfo(
    params: Record<string, any>, 
    options?: { includeHeaders: boolean }
  ): Promise<{
    data: InfoBody,
    headers: Record<string, string | string[] | undefined>
  }>;
}
  • 调用时传入参数即可获取响应头:
@serviceProxy(ExternalApiService)
private externalApi: ExternalApiService;

async test() {
  const result = await this.externalApi.getInfo({id: 1}, {includeHeaders: true});
  // 读取响应头
  const customHeader = result.headers['x-custom-header'];
  // 读取原有响应体
  const body = result.data;
}

2. 自行封装axios调用

LB4 底层REST客户端基于axios实现,如果你是直接用axios发起请求,默认返回的响应对象本身就包含headers字段,直接读取即可:

import axios from 'axios';

async test() {
  const response = await axios.post('https://external-api.com/xxx', {param: 1});
  // 读取响应头
  const customHeader = response.headers['x-custom-header'];
  // 读取响应体
  const body = response.data;
}

3. 全局配置默认返回响应头

如果你需要该服务下所有接口调用都默认返回响应头,可以在绑定服务时自定义响应转换器:

// 在application.ts中绑定服务时添加配置
this.bind('services.ExternalApiService').toDynamicValue((ctx) => {
  return new RestServiceClient(
    ctx.getSync(RestTemplateBindings.REST_TEMPLATE),
    {
      baseUrl: 'https://external-api.com',
      // 自定义响应转换器,默认返回头+体的组合结构
      responseConverter: (res) => {
        return {
          data: res.data,
          headers: res.headers
        }
      }
    }
  )
}).asClass(ExternalApiService);

注意事项

  • 响应头的字段名会被自动转为小写,读取时请用小写格式匹配字段名
  • 浏览器跨域场景下,自定义响应头需要外部API配置Access-Control-Expose-Headers暴露对应的头字段,否则前端无法读取,服务端调用不受该限制

内容的提问来源于stack exchange,提问作者Girish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:24:03