WHI*_*LOR 8 rest url naming-conventions
我理解在MVC模式和REST服务中使用URI很常见,/items/{id}但在URI中使用查询参数有什么坏处?
GET /items/{id} VS GET /items?id={id}
此外,假设一个实体有'referenceId'字段指向一些相关(比如父)实体,我需要创建REST服务来获取父实体的所有项目,哪种方式更好:
GET(POST) /items/parent/{parentId}
Run Code Online (Sandbox Code Playgroud)
要么
GET(POST) /items?parent={parentId}
Run Code Online (Sandbox Code Playgroud)
将会感谢有助于解决构建REST服务URL的主观问题的见解.
我会使用以下方案.
/items/id
Run Code Online (Sandbox Code Playgroud)
这唯一地解决了具有id的项目的资源id.我们没有使用参数作为唯一地寻址此资源的参数(与其他选项的情况一样).就像miguelcobain所说的那样.
/parent/id/items
Run Code Online (Sandbox Code Playgroud)
这id是一个唯一地寻址父资源的ID,以及我们收集/检索它引用的项的资源.根据你在问题中所说的,似乎父引用了多个项目,比如容器或集合.
我使用的惯例是缩小从左到右的范围.因此,如果物品可以是active或inactive.正是如此的项目有一个属性或属性是active或inactive.缩小这个我得到以下方案:
/items/active
/parent/id/active
Run Code Online (Sandbox Code Playgroud)