2012-11-28 103 views
0

我正在编写基本上提供两种资源的REST API:UsersCars。使用API​​,您可以POST/GET每个资源。除PUT/POST/GET之外的自定义操作的REST API

但现在我有一个自定义操作,基本上会给用户一辆新车。这将需要后端的cron作业并执行操作。它不适合POST/PUT的模型。我只是想知道这是什么路线?

我想到:

/addNewCarToUser/:user_id 

我知道这个问题过于本地化,但我只是想知道,如果它只是一个主观判断或是否有这种类型的请求的约定? 谢谢

回答

2

这要看情况。汽车只有属于用户才存在吗?或者它们可以独立存在吗?

如果它们只属于一个用户的情况下,我只想有汽车属于用户和有这样的路径来创建一个新的:

POST /users/:id/cars

或者你也可以指定谁拥有汽车拥有者(似乎违反直觉,但数据方面,汽车通常拥有0或1个拥有者)。该路线可能是:

POST /cars?user_id=######

另一种明智的关系将有三分之一的资源所有权性质,然后你可以创建一个新的汽车,然后一个新的所有权,因为建立了一辆汽车,它给用户将会有2个新资源。

POST /cars 
POST /ownerships 
0

那么,“addNewCarToUser”是一个行为,因此它违反了资源主体。

我能想到的

/用户/:USER_ID /汽车

这将是GET或POST的资源。

0

我会执行POST,因为此操作将导致创建新数据。

不知道什么命名你使用惯例,但我会做这样的事情:

/users/:id/new_car # via POST