【问题标题】:node.js, restify - handle a parameter of type arraynode.js, restify - 处理数组类型的参数
【发布时间】:2014-08-02 02:10:43
【问题描述】:

我有一个带有 restify 的 node.js 服务器。我想向它发送一个包含名称数组的获取请求。我认为请求应该是这样的(但我不确定):

/users?names=bob,joe,michael,joey

这个查询正确吗?

如何获取我在 node.js 服务器上发送的名称?

【问题讨论】:

  • 尝试 names=bob&names=joe&names=...(不确定,但我认为这是实现这一目标的正确方法)
  • 我如何在节点服务器中编写函数?像这样:server.get('/getDataWithNames/:names', function (req, res) { \\some stuff });?

标签: arrays node.js parameters restify


【解决方案1】:

W3C 的建议是一个键可以多次重复多个值:

GET /users?names=bob&names=joe&names=michael&names=joey

良好的系统将被设计为处理这种格式的数据,并能够识别多个键以将它们分组到一个数组中。

您无需在路由中指定查询变量:

// perform: GET /users?names=bob&names=joe&names=michael&names=joey
server.get('/users', function (req, res) {
  // All your query vars from the GET request are in req.query
  res.json(req.query.names);
});

【讨论】:

  • 在哪里可以找到名称数组?在 req.params.users 下?还是在 req.params.names 下?
  • GET 请求,您可以从req.query 检索它。我更新了我的帖子,提供了更多说明。
  • 并且名称将是一个数组?我可以通过req.query.names[0] 等获得名字吗?
  • 是的,但请确保您还首先测试它是否是一个数组:if (Array.isArray(req.query.names)) { },因为它是用户输入并且可以省略(导致req.query.names 成为undefined
  • 谢谢@SamT。我确实提出了一个问题here,我也找到了答案:) 非常感谢!
猜你喜欢
  • 2013-03-23
  • 1970-01-01
  • 2013-01-25
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
相关资源
最近更新 更多