我有一个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中,任何特定的顺序?它应该是POST
,PUT
还是PATCH
?它应该返回什么?
删除多对多记录的相同问题怎么样?
答案 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}'