我正在编写一个 REST API,它基本上提供了两种资源:Users
和Cars
. 使用 API,您可以发布/获取每个资源。
但现在我有一个自定义操作,基本上可以为用户提供一辆新车。这将需要后端的 cron 作业并执行操作。它不适合 POST/PUT 的模型。我只是想知道什么是最好的路线?
我想到了:
/addNewCarToUser/:user_id
我知道这个问题过于本地化,但我只是想知道这是否只是一个判断电话,或者这种类型的请求是否有约定?谢谢
我正在编写一个 REST API,它基本上提供了两种资源:Users
和Cars
. 使用 API,您可以发布/获取每个资源。
但现在我有一个自定义操作,基本上可以为用户提供一辆新车。这将需要后端的 cron 作业并执行操作。它不适合 POST/PUT 的模型。我只是想知道什么是最好的路线?
我想到了:
/addNewCarToUser/:user_id
我知道这个问题过于本地化,但我只是想知道这是否只是一个判断电话,或者这种类型的请求是否有约定?谢谢
这取决于。汽车是否只有属于用户才存在?或者它们可以单独存在吗?
如果它们仅在属于用户的上下文中,我只会让汽车属于用户,并有这样的路线来创建一个新的路线:
POST /users/:id/cars
或者,您可以通过一辆车指定谁拥有一个车主(似乎违反直觉,但从数据上看,一辆车通常有 0 个或 1 个车主)。路线可能是:
POST /cars?user_id=######
另一个合理的关系是拥有第三个资源 Ownerships,然后您可以创建一辆新车,然后是一个新的所有权,因为创建一辆汽车并将其提供给用户将是两个新资源。
POST /cars
POST /ownerships
好吧,“addNewCarToUser”是一个动作,因此它违反了资源主体。
我能想到
/user/:user_id/汽车
这将是 GET 或 POST 的资源。
我会执行一个POST
,因为此操作将导致创建新数据。
不确定您使用的是什么命名约定,但我会这样做:
/users/:id/new_car # via POST