Php RESTAPI资源依赖关系
我有这个IP地址的数据管理面板,它属于组织,由用户负责 现在我有了/api/ip和/api/ip/{id}路由来获取所有或特定的ip。一种资源的格式为:Php RESTAPI资源依赖关系,php,rest,symfony,Php,Rest,Symfony,我有这个IP地址的数据管理面板,它属于组织,由用户负责 现在我有了/api/ip和/api/ip/{id}路由来获取所有或特定的ip。一种资源的格式为: { "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"
}
现在,当我选择IP时,我想在一个页面中显示IP信息,以及它所属的组织信息和负责它的用户信息
当需要/api/ip/{id}时,返回以下数据格式是否好:
通过这种方式,我可以在一个请求中获得所需的所有信息,但它仍然是RESTful API吗
或者我应该再创建两个api路由,比如/api/ip/{id}/organization和/api/ip/{id}/users
在3个单独的请求中获得我需要的所有数据
如果没有,那么什么是合适的方法呢?我将使用Hateoas来做最后一个,它允许您在资源之间进行链接。有一个非常棒的包叫做。结果将类似于: /api/ip/127.0.0.1
拥有嵌套资源是完全可以的。您可以按显示的方式展开它们,也可以通过添加具有适当链接关系或RDF元数据的链接来折叠它们。我建议您使用标准的或至少有文档记录的超媒体类型,例如JSON-LD+Hydra或HAL+JSON
{
"ip": "200.0.0.0",
"mask": 32,
"broadcast": "200.0.0.1",
"organization": { /* organization data */ },
"users": { /* users information */ }
}
{
"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"
}
}