我有一个关于REST API设计的问题.这是一个简单的(可能太简单)API:
GET /ecommerce/order/123
POST /ecommerce/order (create a new order)
PUT /ecommerce/order/123 (update an existing order)
DELETE /ecommerce/order/123 (cancel order)
Run Code Online (Sandbox Code Playgroud)
但是,如果我希望客户输入订单被取消的原因怎么办?我需要将发布数据发送到API,但这不适用于DELETE.为了迎合这一点,我必须将DELETE更改为PUT.然后我会发布两个不同的资源进行更新和取消.
另一种解决方案是更改API:
GET /ecommerce/order/123
POST /ecommerce/order/create (create a new order)
PUT /ecommerce/order/update/123 (update an existing order)
DELETE /ecommerce/order/cancel/123 (cancel order)
Run Code Online (Sandbox Code Playgroud)
我不确定哪个是最好的选择.
关于REST API如何处理单个资源的多个命令有一个更普遍的问题.
任何输入将不胜感激!我很快就会在练习中阅读REST,但这个问题正在扼杀我.