如何为电子邮件发送服务设计REST API?

jan*_*ith 25 rest

如何使用POST,GET,PUT,DELETE为电子邮件发送服务设计REST API?

send: POST - /email
retrieve: GET - /email/{id}
delete: DELETE - /email/{id}
Run Code Online (Sandbox Code Playgroud)

它是设计REST API的正确方法吗?我觉得将POST映射到动作"发送"是不直观的.

Tad*_*eck 30

你给出的方案是正确的.或者,您可以使用控制器执行一些更复杂的操作.

在你的情况下,它看起来像这样:

(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
Run Code Online (Sandbox Code Playgroud)

注意新控制器和更改创建工作.后者是相当主观的,但是合理的(因为你不能真正访问"没有实际的电子邮件"的URL,就像我会解释" /email"没有" {id}"部分).

其他资源:

  • 我以为REST API中应该没有"动词"?IMO REST API应该只包含"名词". (7认同)
  • 是的。我指的是 URL 命名。在 URL 中使用“verb”看起来像是 SOA 风格,而 REST api 是 ROA(面向资源的架构)风格。但是,您的“控制器”风格使其更容易映射到我的程序,因为它看起来像面向对象的风格。 (3认同)