【问题标题】:REST endpoint to link entities用于链接实体的 REST 端点
【发布时间】:2016-06-29 15:53:41
【问题描述】:

我有一个 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?它应该返回什么?

删除多对多记录的同样问题呢?

【问题讨论】:

    标签: rest


    【解决方案1】:

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

    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}'
    

    【讨论】:

    • 第二个链接将模拟一个“拥有”关系。汽车通常没有“人”:)好吧,也许无人驾驶变种会。
    • @LutzHorn,当然他们不知道;)我只是不太了解模型和要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 2015-03-14
    • 2016-01-07
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多