我有一个IP地址的数据管理面板,它属于组织,并由用户负责。
现在,我有了获取全部或特定IP的路由/api/ip和/api/ip/{id}。其中一个资源的格式为:
{
"ip": "200.0.0.0",
"mask": 32,
"broadcast": "200.0.0.1"
}现在,当我选择IP时,我希望在一个页面中显示IP信息,以及它所属的组织信息和负责它的用户的信息。
在需要/api/ip/{id}的情况下,返回以下数据格式好吗
{
"ip": "200.0.0.0",
"mask": 32,
"broadcast": "200.0.0.1",
"organization": { /* organization data */ },
"users": { /* users information */ }
}通过这种方式,我可以在一个请求中获得所需的所有信息,但它仍然是RESTful应用程序接口吗?
或者我是否应该像/api/ip/{id}/organization和/api/ip/{id}/users一样再创建两个api路由,并在3个单独的请求中获取所需的所有数据?
如果没有,什么是合适的方式呢?
发布于 2014-10-28 03:21:51
我会做最后一个,使用Hateoas,它允许您在资源之间进行链接。有一个非常棒的捆绑包,叫做BazingaHateoasBundle。然后,结果将如下所示:
/api/ip/127.0.0.1
{
"ip": "200.0.0.0",
"mask": 32,
"broadcast": "200.0.0.1",
"_links": {
"organization": "/api/ip/127.0.0.1/organization",
"users": "/api/ip/127.0.0.1/users"
}
}发布于 2014-10-28 21:52:02
拥有嵌套的资源是完全可以的。您可以按照显示的方式展开它们,也可以通过添加链接(使用适当的链接关系或RDF元数据)来折叠它们。我建议您使用标准的或至少有文档记录的超媒体类型,例如JSON-LD + Hydra或HAL+JSON。
https://stackoverflow.com/questions/26592359
复制相似问题