【问题标题】:Express.js response converts snake_case keys to camelCase automaticallyExpress.js 响应自动将snake_case 键转换为camelCase
【发布时间】:2018-11-19 02:30:47
【问题描述】:

我正在处理一个小项目,我们正在运行一个基于 Express.js 的节点应用程序,它发送一个 json 响应,其中包含蛇形大小写格式的键。我们有另一个使用此服务的节点应用程序,但此处以驼峰格式访问响应对象键。我想知道在后台发生了什么以使这项工作正常进行。

这是 REST API 中的代码

app.get('/api/customer/:id', (req, res) => {
    const data = {
        "arr": [{
             "my_key": "609968029"
        }]
    }
    res.send(data);
});

这是它在其他节点应用程序中的使用方式

getData = (id) => {
  const options = {
    url: `api/customer/${id}`
  };

  return httpClient.get(options)
    .then(data => {
      const arr = data.arr.map(arrEntry => {
        return {
          myKey: arrEntry.myKey
        };
      });

      return {
        arr
      };
    });
};

这里 myKey 正确地拥有来自 REST API 的数据,但我不确定 my_key 如何转换为 myKey 才能正常工作。

【问题讨论】:

  • 两端是否安装了任何中间件来处理数据?电线上的数据是什么样的?发送的是什么Content-Type
  • 什么是httpClient

标签: javascript node.js express


【解决方案1】:

原来我们使用了驼峰库来将响应对象从键蛇案例解析为骆驼案例。

我在 lib 调用中找到了这段代码

const humps = require('humps');
...
axios(optionsObj)
  .then(response => {
    resolve(humps.camelizeKeys(response.data));
  })
  .catch(err => {
    reject(err);
  });

【讨论】:

    【解决方案2】:

    lodash可以这样做

    _.camelCase('Foo Bar');
    // => 'fooBar'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2012-02-01
      • 2010-11-13
      • 2017-11-28
      相关资源
      最近更新 更多