用于管理项目和项目类型的RESTful约定

时间:2018-01-09 16:23:30

标签: php laravel rest laravel-5

我有一个包含两个表的数据库:Type和Item。

每个Item都有一个Type(因此在Item表中有一个名为type_id的字段。)

我需要创建一个 REST api 来管理这些项目,但我很难为它定义URL结构。

我最初的做法是:

POST /api/type创建一个新类型。

PUT /api/type/id更新现有类型。

然后是项目:

POST /api/items/typeId创建新项目并将其与类型相关联。

PUT /api/items/typeId/itemId更新项目。

我可以看到的问题是,在创建项目之后,看起来我无法更改其类型,因此我将其更改为:

POST api/type/typeId/item创建新项目。

PUT api/items/itemId更新现有项目。

但它似乎不正确(缺乏一致性?)。

请帮忙吗?管理parent/children项目的惯例是什么?

1 个答案:

答案 0 :(得分:1)

仅仅因为itemtype相关,它不会存在于类型下面的层次结构中,特别是如果可以更改关系。将其视为扁平结构:

POST /api/item
PUT /api/item/{itemId}

项目的typeID只是POST / PUT参数之一。

使用分层URL有意义的是检索数据。例如

GET /api/type/{typeId}/items

列出此类型的所有项目。

注意:出于一致性原因,我在POST / PUT中使用了单数形式item而不是items。您一次只能发送一个项目。在检索时,您可以检索多个项目。