我有一个 URI 结构,它对特定数据集是分层的:
/Blackboard/Requirement/{reqID}/Risk/{riskId}/MitigationPlan/{planId}
如果 url 以不同的 ID 拆分,您可以获得该特定资源,例如:
GET: /Blackboard/Requirement/2/Risk/2
这将获得与需求 #2 相关联的风险 #2
问题是这样的:现在需要的功能是能够在同一个 HTTP 请求中更新(PUT)和删除(DELETE)一组需求。(当您向/Blackboard
URL 发送 HTTP GET 时,整个“需求”集都是 GET 的——这是默认功能,因为有些东西是写在黑板上的,形象地)
所以我应该像这样创建一个只支持 PUT/DELETE 的新集合资源 URL:
/Blackboard/Requirements : HTTP PUT/DELETE
(注意复数)
或者实际上使现有的 URL 结构复数
/Blackboard/Requirements/{reqID}/Risk/{riskId}/MitigationPlan/{planId}
后者似乎打破了语义一致性,因为层次结构中的其他项目是单一的。我也应该让它们复数吗?
拥有一个项目 id 是否有助于消除奇异性(从人类的角度来看 :)Blackboard/Requirements/1
或者是否最好仅出于操作原因公开不同的资源(即集合)(因为没有 id 不允许 GET - 无论它是单数还是复数)?
只是想知道社区对通常选择哪种方法(或者是正确的方法)以实现清晰清洁设计的意见。