首页 > 解决方案 > 我可以将 statusCode 更改为 Boom 错误代码吗?

问题描述

我正在做一个 API,在 Boom 错误有效负载上,我得到的响应是:

{
    "statusCode": 405,
    "error": "Method Not Allowed",
    "message": "Method Not Allowed"
}

但在我正在使用的另一个 API 上,该statusCode字段应重命名为code,因此响应如下所示:

{
    "code": 405,
    "error": "Method Not Allowed",
    "message": "Method Not Allowed"
}

我想知道是否可以这样做,Boom或者是否有其他方法可以做到这一点。

标签: node.jstypescripthapi

解决方案


我没有找到在繁荣库中重命名的statusCode方法code

实现您想要的一种方法是编写一个小型服务器扩展来获取繁荣对象并返回自定义错误有效负载。不利的一面是,您将松开 Boom Object 本身。

server.ext('onPreResponse', (request, h) => {
    const response = request.response;
    if (!response.isBoom) {
      return h.continue;
    }

    const renameProp = (cProp, nProp, { [cProp]: cValue, ...rest }) => ({
      [nProp]: cValue,
      ...rest,
    });

    return h
      .response(renameProp('statusCode', 'code', response.output.payload))
      .code(response.output.statusCode);
  });

Hapi Docs - 如何实现服务器扩展


推荐阅读