我正在为我的项目开发一个通用的REST API,当我有一个表/资源包含2个或更多主键时,我想知道该怎么做。
例如,假设我有一个名为" question"的表。有两个主键(日期和类型),我需要创建资源REST URI。遵循标准架构api/{resource}/{id}
?
可能是这样的:api/question/{:date},{:type}
?最好的方法是什么?
谢谢。
答案 0 :(得分:2)
你是在正确的道路上,我认为你绝对应该在资源网址中包含日期和类型,如果这是唯一可以唯一识别它的方式
api/question/{date}_{type}
答案 1 :(得分:2)
这是何时使用slug的一个很好的例子。对 What is a slug 的回答可以很好地说明如何在api设计中使用复合主键。
有了这个,你可以选择一些选择。哪个是最好的意见问题,哪些适合您的需求。
同样的模式也可以应用于以下内容。
API /问题/ {:日期} _ {:类型}
API /问题/ {:日期} - {:类型}
答案 2 :(得分:2)
我认为你称之为多个primarey键的是一个复合键。正确?
也许,最适合你的选择是:
api/questions/date/{:date}/type/{:type}
对于您的案例来说,这更自然地作为http资源阅读,即使没有意义,您的应用程序中也会有api/question/date/{:date}
。
另一种选择是:
api/questions/{:date}/{type}/
答案 3 :(得分:1)
我觉得为资源提供两个主键并不是一个好主意。 REST很大程度上取决于resources及其表示形式。
如果您遇到资源的两个标识符的情况 - 然后重新设计您的应用程序(可能是通过在将其映射到其他标识符后在后端创建另一个密钥)并将这些多个密钥添加为资源中的属性
想法是 - 如果你想创建真正的世界级REST API,“保持简单”。
奖励:您不需要向客户/开发人员传授一些关于您使用API所做的事情的额外事情。