2013-09-30 69 views
1

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

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

其实你在上面看到的只是一个DynamoDB查询调用的回报。

所以问题是......你使用一个特殊的库,你可以传递数据,这将格式化并返回JSON格式的数据。反过来,你可以通过res.send(data)将它返回给客户端,还是由我们来使'数据'符合JSON,然后返回它?在一天结束的时候,我们都希望结果是这样的:

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

谢谢!

回答

4

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

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

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

编辑:更正的响应内容类型。从服务器

+0

谢谢,所以...现在我看到数据为一个字符串。这可以吗?它的格式不像jsonapi.org/format中的例子那样漂亮。这里是我的输出现在的样子:http://pastebin.com/RM3qJLih – Cmag

+0

格式?你想调试调试?试试'JSON.stringify(data,null,2);' – ngsiolei

-2

JSON数据应该是一个JSON字符串

你要分析它回客户端JSON格式。

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