具有多个主键的资源的REST API URI

时间:2016-06-04 09:49:36

标签: rest restful-architecture api-design

我正在为我的项目开发一个通用的REST API,当我有一个表/资源包含2个或更多主键时,我想知道该怎么做。

例如,假设我有一个名为" question"的表。有两个主键(日期和类型),我需要创建资源REST URI。遵循标准架构api/{resource}/{id}

的最佳方法是什么?

可能是这样的:api/question/{:date},{:type}?最好的方法是什么?

谢谢。

4 个答案:

答案 0 :(得分:2)

你是在正确的道路上,我认为你绝对应该在资源网址中包含日期和类型,如果这是唯一可以唯一识别它的方式

api/question/{date}_{type}

答案 1 :(得分:2)

这是何时使用slug的一个很好的例子。对 What is a slug 的回答可以很好地说明如何在api设计中使用复合主键。

有了这个,你可以选择一些选择。哪个是最好的意见问题,哪些适合您的需求。

  • api / question / {:date} / {:type}或api / question / {:key1} / {:key2} /.../ {:keyn}

同样的模式也可以应用于以下内容。

  • 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​​所做的事情的额外事情。