REST约定排除

时间:2019-04-15 11:10:08

标签: rest api

可以说我有一个organization表和role表,并且与多对多关系相关。

  1. /organization将提供所有组织。
  2. /organization/1将提供特定的组织。
  3. /organization/1/role将提供特定组织的角色。

现在,在组织1中显示不是角色的惯例应该是什么?

1 个答案:

答案 0 :(得分:1)

  

可以说我有一个organization表和role表,并且与多对多关系相关。

请记住,REST没有的概念。在解决数据库问题时,REST就是关于资源的。

defines 资源配置为任何可以命名的信息。因此,是的,数据库表可以看作是一种资源,但是我知道您的API是关于存储在表中的数据,而不是表本身。

/organization映射到组织的集合时,使用诸如/organizations之类的复数名词可能更有意义。鉴于REST并没有说出URI拼写,这完全取决于您。

  

显示不在组织1中的角色的约定应该是什么?

好吧,恐怕您找不到在URI(甚至在查询字符串中)中表示该内容的任何标准方式(或至少是任何普遍采用的约定)。但是无论如何,我还是想给你2美分。

例如,您可以具有一个/roles端点和一个查询参数以排除某些公司,如下所示:

GET /roles?excluding-company=1

或者,您可以将集合过滤搜索分开。如果您的API必须支持高级搜索,那将很有趣。您可以考虑如下所示的端点(我组成了有效负载):

POST /search HTTP/1.1
Host: example.org
Content-Type: application/json

{
  "type": "role",
  "organization": {
    "excluding": [ 1 ]
  }
}