如何向我的Node.js HTTP请求添加自定义值以供Express使用

时间:2016-10-03 19:52:19

标签: node.js express

我有一台Express服务器正在侦听Unix域套接字。我这样做了一个http请求:

const requestOptions = {socketPath, method, path, headers, _custom: {foo: () => 'bar'}}
http.request(requestOptions, responseCb)

并希望在我的Express路线处理程序中使用_custom

app.get('/', (req, res) => {
    console.log(req._custom)
})

这可能吗?

编辑:_custom是一个有功能的对象。

编辑:我标记为正确的答案是我能找到的最佳解决方案,但它不允许发送对象(这是我真正想要的)。

1 个答案:

答案 0 :(得分:2)

您可以在需要使用_custom的路线之前在Express服务器中添加自定义middleware,从而将req添加到req._custom对象。

app.use((req, res, next) => {

  if (req.get('X-Custom-Header')) {
   // add custom to your request object
   req._custom = req.get('X-Custom-Header');
  } 

  return next();
});

在客户端,您可以添加自定义标题

let headers = {
  'X-Custom-Header': 'my-custom-value'
};

const requestOptions = {socketPath, method, path, headers};
http.request(requestOptions, responseCb)