【问题标题】:JSON API result formatJSON API 结果格式
【发布时间】:2013-09-30 06:25:53
【问题描述】:

各位, 使用 restify.js 在 Node.JS 中设计我的第一个 API。我的背景不是webapis,请原谅我的业余问题。无论如何,我想要 res.send(data);响应以遵守http://jsonapi.org/format/,以便我的移动应用程序可以开始使用 api 调用。目前如果你调用我的api,它会返回以下格式的数据:

{"Count":1,"Items":[{"dbsource":{"S":"foo"},"id":{"S":"5002820"},"name":{"S":"fnameblah,lnameblah"},"expiration":{"S":"06/13/2015"},"type":{"S":"bar"}}]}

实际上,您在上面看到的只是 DynamoDB Query 调用的返回。

所以问题是......您是否使用可以将数据传递到的特殊库,该库会格式化并以 JSON 格式返回数据。反过来,您可以通过 res.send(data) 将其返回给客户端,还是由我们来使“数据”JSON 兼容,然后返回?归根结底,我们都希望结果看起来像:

{
  "posts": [{
    "id": "1",
    "title": "Rails is Omakase",
    "links": {
      "author": "9",
      "comments": [ "5", "12", "17", "20" ]
    }
  }]
}

谢谢!

【问题讨论】:

    标签: json node.js api


    【解决方案1】:

    在服务器端,字符串化 JSON 对象,

    //...
    res.statusCode = 200;
    res.setHeader('Content-Type', 'application/json');
    res.send(JSON.stringify(data)); //data is JSON object
    res.end();
    

    在客户端,相应地解析 JSON 字符串。

    编辑:更正响应内容类型。

    【讨论】:

    • 谢谢,所以...现在我将数据视为一个字符串。那样可以么?它的格式不如 jsonapi.org/format 上的示例漂亮。这是我的输出现在的样子:pastebin.com/RM3qJLih
    • 格式?您想要缩进进行调试吗?试试JSON.stringify(data, null, 2);
    【解决方案2】:

    来自服务器的 JSON 数据应该是 JSON 字符串

    您必须在客户端将其解析回 JSON 格式。

    JSON.parse(string);  // return JSON object
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      相关资源
      最近更新 更多