【问题标题】:Is an outer array valid JSON for a REST api?对于 REST api,外部数组是有效的 JSON 吗?
【发布时间】:2014-08-12 13:07:34
【问题描述】:

在 Node.js webb 应用程序中使用 MongoDB 和 Mongoskin 时,我可以在集合上运行 .find() 以获取其所有文档。结果是一个 mongodb 游标。 然后使用游标.toArray() 方法将此游标转换为数组。

[
  {
    _id: "53ea101656cb0c0407306405",
    key: "value", 
    ...
  }, 
  {
    _id: "53ea101656cb0c0407306405",
    key: "value", 
    ...
  },
  ...
]

但这是 REST Api 的有效 JSON 输出吗?...还是应该将外部数组转换为对象? 也许没关系?

【问题讨论】:

    标签: javascript node.js rest


    【解决方案1】:

    它是valid JSON,假设您在密钥周围加上引号。 REST 没有指定 JSON 响应必须使用的格式,因此请为您的应用程序选择合适的格式。

    【讨论】:

    • 其实我找到了这个jsonapi.org/format/#document-structure-top-level。可能对比我更有用的人。
    • 从该链接看来,这种情况下正确的 JSON 样式应该是一个对象,其中包含一个名为“data”的字段,其中包含数组。
    【解决方案2】:

    正如其他人所说,这不违反任何规则,完全可以。

    但是,冒着使情况过于复杂的风险,我提醒您,如果您希望将元数据添加到有关此集合的响应中,您可能希望将数组包装在一个对象中。例如,如果您想在响应正文中放置一些与此集合特别相关的超媒体链接(用于自我,或创建新对象,或者可能是分页),它们不太可能适合数组内的任何位置。当然,您可以将链接放在标题中,这取决于您。

    但一般而言,您可能希望在响应正文中放入一些元数据,因此请记住这一点,并确保您尽可能合理地尝试对未来的响应进行验证。

    【讨论】:

      【解决方案3】:

      数组很好,在获取集合时通常是首选。当为集合 GET 返回数组时,大多数 JS REST 库(如 Backbone)都可以开箱即用,并且需要一些额外的代码才能提取数组。

      【讨论】:

        猜你喜欢
        • 2022-11-28
        • 1970-01-01
        • 1970-01-01
        • 2017-10-05
        • 2018-07-03
        • 2013-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多