用于链接实体的REST端点

时间:2016-06-28 16:27:10

标签: rest

我有一个cars实体和一个people实体,并且REST端点非常匹配:

curl -i -X POST -H "Content-Type:application/json" http://localhost:8888
     /cars/ -d '{"name":"Fuson","color":"red","foo":"bar"}'

curl -i -X POST -H "Content-Type:application/json" http://localhost:8888
     /people/ -d '{"name":"John","age":"27","foo":"bar"}'

我也有多对多people_have_cars entity

要添加记录,REST端点应该是什么样的?例如,人和车是在URL中还是在身体中?如果在URL中,任何特定的顺序?它应该是POSTPUT还是PATCH?它应该返回什么?

删除多对多记录的相同问题怎么样?

1 个答案:

答案 0 :(得分:2)

这取决于关系中哪一方是主人。它看到一个人可以拥有多辆汽车,因此要查看汽车,您应该引入以下终点:

GET /people/{id}/cars/

为一个人添加一辆新车:

POST /people/{id}/cars/

curl -i -X POST -H "Content-Type:application/json" http://localhost:8888
     /people/{id}/cars/ -d '{"carId": someCarId}'

您还可以反转(或实施两者)关系并将人员添加到特定车辆:

POST /cars/{id}/persons/

curl -i -X POST -H "Content-Type:application/json" http://localhost:8888
         /cars/{id}/persons/ -d '{"personId": somePersonId}'