Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php RESTAPI资源依赖关系_Php_Rest_Symfony - Fatal编程技术网

Php RESTAPI资源依赖关系

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地址的数据管理面板,它属于组织,由用户负责

现在我有了/api/ip和/api/ip/{id}路由来获取所有或特定的ip。一种资源的格式为:

{
    "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"
    }
}