我正在使用 Web Api 并且有一个场景,客户端每隔n秒发送一次心跳通知。有一个心跳对象是在 POST 而不是 PUT 中发送的,因为在我看来,它们正在创建一个新的心跳而不是更新现有的心跳。
此外,客户端有一个要求,要求他们检索所有其他当前在线的客户端以及单个客户端拥有的未读消息的数量。在我看来,我有两个选择:
- 执行 POST,然后执行 GET,从纯 REST 的角度来看,这对我来说似乎更干净。我正在创建和检索,我认为 SOLID 原则更愿意相应地拆分它们。但是,这种方法意味着两次往返。
- 让 POST 返回一个对象,该对象包含与 GET 否则会完成的相同信息。这会将所有内容合并到一个请求中,但我担心这种方法会被认为是不明智的。这不是一个纯粹的 POST。
删除的选项 #2 如下所示:
public HeartbeatEcho Post(Heartbeat heartbeat)
{
}
HeartbeatEcho 是一个包含其他在线客户端的属性和未读消息数的类。
Web Api 当然支持选项#2,但仅仅因为我可以做某事并不意味着我应该这样做。选项#2 是可憎的、过早的优化还是实用主义?