在设计和创建 RESTful API 时,会出现以下问题:
该 API 支持 GET(用于查询)、POST(用于创建)、PUT(用于更新)和 DELETE(用于删除)。
假设数据库中有一个article and a shop两者都已经存在。
现在我们需要一个休息调用来将文章实例链接到商店实例。以下哪一个解决方案是最好/最简洁的 REST 设计:
- /shop/id/article/id/ --> 带 POST
- /shop/id/article/id/ --> 与 PUT
- /shoparticlerelation/ --> 带有 POST(主体中有 id 的对象)
- /shoparticlerelation/ --> with PUT(主体中有 id 的对象)
如果没有明确的答案或所有解决方案都同样好,如果有明确的论证原因,这也可能是一个有效的答案。
我想在这种情况下你已经收集了shop
s 和一个集合article
s,而您只想将两个链接在一起。
一种选择是公开一个更多的数据库,例如提供此链接的“资源”,并进行类似的操作
POST /shopArticleLinks HTTP/1.1
{ "shop" : xxx,
"article: YYY
}
我个人希望将其作为更自然庄园中的商店和/或物品的财产进行公开,例如
PUT /shop/<ID> HTTP/1.1
{ /* existing details */
"articles": [ /* list of articles */ ]
}
我在那里使用了 JSON,但当然可以使用您想要使用的任何格式。正如您所说,我也坚持使用 PUT,但请记住,使用 PUT,您应该发送新修改版本的完整替换,PATCH 可用于发送部分更新,但您需要考虑如何做那,可能会像
PATCH /shops/<ID>/articleLinks HTTP/1.1
{ "add" : [],
"remove : []
}
别忘了服务器端你可以看看什么articles
被引用并确保它们有正确的后向指针。
Additional thoughts
关于第二种方法,您将链接公开为shop
and/or article
资源。请记住,当您更新给定的链接时,这是完全可以接受的(并且在这种情况下相当合适)shop
相应的链接articles
也更新了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)