我有一个REST api,带有用于用户注册的POST端点。但是,我也想自动发送一封欢迎电子邮件,但我认为将其作为 POST 请求的副作用是糟糕的设计。到目前为止,我想出了三个选项:
- 具有浏览器单独调用以启动的另一个端点欢迎电子邮件发送。我不知道会是什么(获取/发布?而且它有些效率低下,容易被滥用,因为必须再次发送电子邮件地址。
- 有一个可选的请求正文中的"发送欢迎电子邮件"字段。
- 与 2 相同,但在查询参数中。
也许这是主观的,但以上哪项是最佳实践?我觉得他们中的任何一个都不符合要求,所以欢迎任何其他建议。
让 POST 请求有副作用是可以的。
我认为这将是一个很好的"最佳实践"。此处的假设是,您有一个表示资源列表的"用户"资源。
通常,POST
将在"集合"资源上使用,以在集合中创建新条目。
这将是这样的:
POST /users
Content-Type: application/json
{
"firstName": "foo",
etc...
}
服务器在相同的HTTP请求期间自动发送欢迎电子邮件是完全可以的。无需为此创建第二个终结点。
所以我的建议是不要有辅助 HTTP 请求。