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