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

JSON API delete 'has and belongs to many' relationship

我正在使用 jsonapi-resources gem 为类似购物车的东西构建一个 API,我需要一个端点来从购物车中删除商品。

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

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

基本上我需要一个端点来做类似的事情:

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

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

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

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

纠结了几个小时,在写这个问题的过程中我终于找到了答案。不过,它根本没有很好的记录——我必须通读 gem 的测试才能解决这个问题。

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

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