JSON API 删除'has and belongs to many'关系



我正在使用jsonapi资源gem为类似购物车的东西构建一个API,并且我需要一个端点来从购物车中删除项目。

目前,我假设使用此 API 的客户端不需要实际的"购物车项目"。相反,它只需要购物车中的产品列表。

但是,似乎没有任何方法可以在不知道 jsonapi 资源 ID 的情况下删除该内容,即客户端在不知道连接模型 id 的情况下无法从购物车中删除某些内容。

基本上,我需要一个执行以下操作的端点:

DELETE http://example.com/carts/1/cart-items?filter[product]=1

相反,我能找到的唯一选择是

DELETE http://example.com/cart-items/1

或者,我可以实现一个自定义操作来处理这个问题,但是我已经浏览了文档,找不到编写自定义操作的规定方法。

在为此挣扎了几个小时之后,在写这个问题的过程中,我终于找到了答案。不过,它根本没有很好的记录——我不得不通读宝石的测试才能弄清楚。

curl -X DELETE -H "Content-Type: application/vnd.api+json" --data '{ "data" : [{"type": "products", "id": 185 }] }' http://localhost:3000/api/v1/carts/4085/relationships/products

这成功地从购物车中删除了该项目(并且没有触及产品记录本身(。

最新更新