如何使用POST、GET、PUT、DELETE设计用于电子邮件发送服务的REST API?
send: POST - /email
retrieve: GET - /email/{id}
delete: DELETE - /email/{id}
这是设计REST API的正确方法吗?我觉得将POST映射到"发送"操作是不直观的。
您给出的方案是正确的。或者,您可以使用控制器来执行一些更复杂的操作。
在你的情况下,它可能看起来像这样:
(action) (verb) (URI) (type)
create: POST - /emails - collection
retrieve: GET - /email/{id} - resource
update: PUT - /email/{id} - resource
delete: DELETE - /email/{id} - resource
send immediately: POST - /email/{id}/sendImmediately - controller
just send: POST - /email/{id}/send - controller
do something else: POST - /email/{id}/someOtherActionType - controller
注意新的控制器和更改创建工作。后者相当主观,但合理(因为你无法真正访问"没有实际电子邮件"的URL,就像我在解释"/email
"时没有"{id}
"部分一样)。
附加资源:
- REST API设计手册