用于PUT / POST / GET以外的自定义操作的REST API

时间:2012-11-28 05:49:53

标签: ruby-on-rails ruby rest sinatra

我正在编写一个基本上提供两种资源的REST API:UsersCars。使用API​​,您可以POST / GET每个资源。

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

我想到了:

/addNewCarToUser/:user_id

我知道这个问题过于局部化,但我只是想知道这只是一个判断调用还是有这种请求的约定? 感谢

3 个答案:

答案 0 :(得分:2)

这取决于。如果汽车属于用户,它们是否只存在?或者他们可以自己存在吗?

如果它们只属于属于用户的环境,我只会让汽车属于用户并拥有这样的路线来创建一个新的:

POST /users/:id/cars

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

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

另一个合理的关系是拥有第三个资源所有权,然后你可以创建一个新车然后新的所有权,因为创建汽车并将其提供给用户将是2个新资源。

POST /cars
POST /ownerships

答案 1 :(得分:0)

嗯,“addNewCarToUser”是一个动作,因此它违反了资源主体。

我能想到

/用户/:USER_ID /汽车

这将是GET或POST的资源。

答案 2 :(得分:0)

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

不确定您使用的命名约定,但我会这样做:

/users/:id/new_car # via POST