我知道 REST 没有严格的规则,但是有一些通用的做法可以对其进行标准化。
我对这件事有点新鲜。我喜欢处理集合的想法,所以我使用了一个约定,其中我将资源多元化,例如:
/Messages (POST/GET/)
/Messages/1 (DELETE/PUT)
我也喜欢嵌套集合的想法,所以我有例如:
/Messages/1/Attachments (Post/Get)
等等
但是在涉及发送消息等自定义操作时我遇到了问题
一种方式是:
/Messages/1/Send (POST)
但我也在考虑类似的事情:
/Message/1/MessageSendRequest (POST)
或者这可能是个坏主意?
在这个例子中它适合,但在某些情况下它不适合。
如果 REST 中有这样的东西,最佳实践是什么:)
最佳答案
事实上,在 URL 中使用“ Action ”并不是真正的 RESTful。您应该在消息中使用状态字段。
类似于这样的结构:
{
"id": "1",
"title": "some content",
"date": "...",
"status": "draft",
(...)
}
从 draft
更新状态至 sending
将触发电子邮件的发送。您可以注意到在此地址 /messages/1
上有两种方法可以进行此更新。 :PUT
带有完整的有效载荷。当电子邮件的内容很大时,这可能不太方便。 PATCH
带有包含您要更新的内容的有效负载。这里没有真正的约定。您可以仅发送要更新的字段( { "status": "sent" }
)或利用 JSON PATCH 格式(参见 http://jsonpatch.com/ 和 https://www.rfc-editor.org/rfc/rfc6902 ),内容如下:[ { "op": "replace", "path": "/status", "value": "sent" } ]
. 如果邮件实际上是根据请求发送的,状态将更新为
sent
.另一种方法也是可能的。您可以使用方法
POST
在电子邮件网址 /messages/1
.这将触发电子邮件的发送。不需要任何内容,如果确实发送了电子邮件,状态代码 200
会被退回。希望这对你有帮助,
蒂埃里
关于rest - RESTFUL API 中 "Actions"的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32651793/