2015-04-12 130 views
0

我正在编写一个移动客户端,它使用来自第三方服务器(我无法控制的)的JSON数据。问题是,当我做以下网址挖掘到JSON对象的REST URL

curl http://server.com/zm/api/events.json 

它返回的结构,像这样的事件的大名单的获取:

"events": [ 
     { 
      "Event": { 
       "Id": "280", 
       "MonitorId": "1", 
       "Name": "Familyroom-280", 
       "Cause": "Motion", 
       "StartTime": "2015-04-12 06:54:43", 
       "EndTime": "2015-04-12 06:55:27", 
       "Width": "1280", 
       "Height": "960", 
       "Length": "44.24", 
       "Frames": "74", 
       "AlarmFrames": "23", 
       "TotScore": "973", 
       "AvgScore": "42", 
       "MaxScore": "279", 
       "Archived": "0", 
       "Videoed": "0", 
       "Uploaded": "0", 
       "Emailed": "0", 
       "Messaged": "0", 
       "Executed": "0", 
       "Notes": "Motion: mudroom door, study door" 
      } 
     }, //and many more such "Event" events inside the array 

我是新来的JSON,但是当我读了,其规范说服务器必须提供一种机制来提取任何子对象。因此,举例来说,我要建立一个网址,以仅获取其中有1

一个MonitorId我已经试过

curl http://server.com/zm/api/events/Event/MonitorId/1.json 
curl http://server.com/zm/api/Event/MonitorId/1.json 
curl http://server.com/zm/api/events.json?MonitorId="1" 
curl http://server.com/zm/api/events.json?Event.MonitorId="1" 

但我似乎无法得到它的权利的事件。有人可以建议什么是我需要构造的URL只返回MonitorId =“1”的元素?

谢谢!

+3

你从哪里读到服务器必须提供一种机制来提取任何子对象? – mason

+1

每个网站都有自己的API。你必须阅读'server.com'中的文档,以便知道什么是正确的URL。 – nZeus

+0

哎呀。对不起 - 我正在阅读http://jsonapi.org/format/,并且我误读了“服务器必须支持为每个提供的URL提取资源数据”,因为“服务器必须支持为每个提供的对象提取资源数据” Shucks。我认为这就像xpath,我可以钻到我想要的任何级别。服务器使用CakePHP实现它的api – user1361529

回答

1

通过REST,您不会开始构建URL。这是服务器的责任,如果它没有提供URL(或URI模板)的超链接,那么我们不是在谈论REST。

尝试不同的响应格式,也许有HTML,ATOM,JSON-LD,HAL + JSON等等......包含超链接的东西。

我认为这就像xpath,我可以深入到我想要的任何级别 。

大多数REST服务不支持自定义查询。