注意:这不是专门用于API。
我有三个实体:Building
Unit
Person
这些是纯粹简单的独家1:M关系
Person
只能住在(1)单位
Unit
只能存在于(1)单元中
Building
基本上是父母。
我应该有以下网址:
查看模式非常简单
/buildings //Show all buildings
/buildings/[id] //Show one building
/buildings/[id]/units //Show all units in a building
/buildings/[id]/units/[id]/people //Show all people in a unit
然而,这似乎有点冗长。虽然这些URL可能适用于重定向到GET的PUTS和POSTS,但如果我想显示建筑物中的所有单元和人员,我应该使用类似buildings/[id]/details
的路由还是有其他标准惯例?< / p>
此外,当我想显示一个表单来编辑值时,是否有一个标准的url路径,如buildings/[id]/edit
POST和PUT在这种情况下将基本上使用相同的形式(但PUT具有填写的字段。)
答案 0 :(得分:1)
我认为你的问题可能会吸引一些自以为是的答案,但听到其他人的意见是很好的。关于RESTful API设计的实践。
你说你的路径看起来很冗长,如果你的ID是自动递增的整数,你可能会有这样的感觉,而指定建筑物,单位等的唯一方法是使用
这样的路径buildings/1/units/4/tenants
buildings/1/units/4/tenants/5
对我来说,这些都是明确的界面。如果我必须维护您的代码,我认为这里发生的事情非常明显。如果我不得不批评某些事情,我会说你似乎正在以一种允许全部或一种选择的方式发展。不过,这是你的设计选择。也许这就是你在这种情况下所需要的。以下是一些可以想到的例子。
更新一个租户
PUT buildings/1/units/4/tenants/2
创建三个单元
POST buildings/2/units //carries message body for SQL in back end
阅读具有特定条件的租户
GET buildings/1/tenants?params= //GET can't carry a message body
删除具有特定条件的租户
DELETE buildings/5/tenants?criteria= //params needed?