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
这成功地从购物车中删除了商品(并且没有触及产品记录本身)。
我正在使用 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
这成功地从购物车中删除了商品(并且没有触及产品记录本身)。