什么是RESTful API格式'/foos/1/bar/2';方法

什么是RESTful API格式'/foos/1/bar/2';方法,rest,restful-architecture,Rest,Restful Architecture,我正在阅读RESTfulAPI,这让我很困惑 删除/zoos/12/animals/5-删除动物园的动物5 当你知道动物id时,为什么有人需要暗示它是什么动物园?不只是删除/animals/5就可以了吗 或者这句话的意思是删除动物园的第五只动物?12?这取决于建筑和环境 在这种情况下,可以假设对于动物园而言,每个动物都有一个唯一的Id 所以动物园#13动物#5可能与动物园#12动物#5不同 因此,您不希望删除动物#5,因为如果您不指定动物园Id,它可能会从所有动物园中删除。这一切都取决于体系结构

我正在阅读RESTfulAPI,这让我很困惑

删除/zoos/12/animals/5-删除动物园的动物5

当你知道动物id时,为什么有人需要暗示它是什么动物园?不只是
删除/animals/5
就可以了吗


或者这句话的意思是删除动物园的第五只动物?12?

这取决于建筑和环境

在这种情况下,可以假设对于
动物园
而言,每个
动物
都有一个唯一的
Id

所以
动物园
#13
动物
#5可能与
动物园
#12
动物
#5不同


因此,您不希望
删除
动物
#5,因为如果您不指定
动物园
Id
,它可能会从所有
动物园
中删除。这一切都取决于体系结构和上下文

在这种情况下,可以假设对于
动物园
而言,每个
动物
都有一个唯一的
Id

所以
动物园
#13
动物
#5可能与
动物园
#12
动物
#5不同


因此,您不想
删除
动物
#5,因为如果您不使用以下请求指定
动物园
,它可能会从所有
动物园
中删除,我将解释此RESTful请求:

DELETE /zoos/12/animals/5
DELETE
定义了REST请求的方法。在这种情况下,我们请求删除一个资源

/zoos/12/anies/5
是我们提出请求的资源。您可以将其视为唯一ID,但不能将其视为数据库中单个实体的唯一ID。它是一个逻辑实体,可以跨越传统关系数据库中的多个表

这个特定的RESTURI表明我们正在从ID为12的动物园中选择一个动物园,从ID为5的动物中选择一个动物,尽管REST并不意味着后端实现是关系型的

然而,使用NoSQL数据库,这个URI可能意味着我们正在访问Zoo文档12。然后,该文档可能会有一个“动物”数组属性,该属性可能会将该动物设置为数组中的第5个

REST的目的是抽象传统的关系数据库方法,限制用户请求超出范围或未经授权访问的资源


我喜欢把它想象成穿过一座建筑物。当您在给定的房间中时,您只能访问与一个房间和另一个房间相邻且有门可供其使用的房间。如果当前房间中没有门(或窗户、楼梯、梯子等)可以移动到其他资源,那么您将无法在没有找到其他入口位置和路径的情况下访问这些房间。

使用以下请求,我将解释此RESTful请求:

DELETE /zoos/12/animals/5
DELETE
定义了REST请求的方法。在这种情况下,我们请求删除一个资源

/zoos/12/anies/5
是我们提出请求的资源。您可以将其视为唯一ID,但不能将其视为数据库中单个实体的唯一ID。它是一个逻辑实体,可以跨越传统关系数据库中的多个表

这个特定的RESTURI表明我们正在从ID为12的动物园中选择一个动物园,从ID为5的动物中选择一个动物,尽管REST并不意味着后端实现是关系型的

然而,使用NoSQL数据库,这个URI可能意味着我们正在访问Zoo文档12。然后,该文档可能会有一个“动物”数组属性,该属性可能会将该动物设置为数组中的第5个

REST的目的是抽象传统的关系数据库方法,限制用户请求超出范围或未经授权访问的资源


我喜欢把它想象成穿过一座建筑物。当您在给定的房间中时,您只能访问与一个房间和另一个房间相邻且有门可供其使用的房间。如果当前房间中没有门(或窗户、楼梯、梯子等)可以移动到其他资源,那么您将无法在没有找到其他入口位置和路径的情况下访问这些房间。

休息的概念不一定是路线决定因素和请求决定因素。为了进一步说明DELETE/zoos/12/anies/5-Deletes animal#5 for zoo#12。这意味着对路线/zoos/12的请求(删除)访问12 zoo,可能存储在一些数据库中。然后,12 zoo的动物(/zoos/12/animals/5)此案例得到的是id为5的任何动物(必须存在/zoos/12/)。此模式称为绝对路由寻址,因为必须在整个路由地址前加上前缀。然而,存在相对路由寻址,其中部分路由地址可以相对于当前路径存储


如果您使用的是绝对寻址,并且没有包含整个url,则该路由无效。

不一定,rest的概念是路由决定因素和请求决定因素。为了进一步说明DELETE/zoos/12/anies/5-Deletes animal#5 for zoo#12。这意味着对路线/zoos/12的请求(删除)访问12 zoo,可能存储在一些数据库中。然后,12 zoo的动物(/zoos/12/animals/5)此案例得到的是id为5的任何动物(必须存在/zoos/12/)。此模式称为绝对路由寻址,因为必须在整个路由地址前加上前缀。然而,存在相对路由寻址,其中部分路由地址可以相对于当前路径存储


如果您使用的是绝对地址,并且没有包含整个url,则该路由无效。

您的第二次猜测是正确的:D您的第二次猜测是正确的:D