这是一个一般的RESTful API设计问题。我们正试图用最常用的方法解决以下案例。
我们有一个资源,让我们说:/ licenses / 5123 资源的到期日期需要更新为过期状态。当然,最简单的方法是公开expiration_date并让客户端将其设置为新日期,但这是不可取的。 要更新资源,我们使用PUT方法,并希望指定更新类型。换句话说,更新操作是否过期'或者'延伸'或者'无论什么'。
我考虑了一些选择:
请分享您的意见和/或提供可能描述此类案例的在线资源的任何参考。我无法想象这是一个独特的案例。
非常感谢!
答案 0 :(得分:2)
通常选项2和3是优选的。没有必要使用HTTP操作或自定义标头进行自定义操作。
PUT是一种合理的操作方法,用于更新您描述的许可证。将更新的细节放在JSON请求体中听起来是合理的(选项3),这就是我要做的事情。
答案 1 :(得分:2)
选项2是我的首选。
我认为选择2是我最常见的最佳做法,它干净,高效且易读。大部分时间我都在追求可读性和可维护性,因为我可能不会在未来调试,修复或扩展代码。
使用HTTP协议或标题执行任何操作总是感觉像是“黑客”。我认为它已经超越了并且需要更多的努力而不是问题最有可能的价值(废弃解决方案1和4)。
选项3的一个潜在问题是,您可能会将业务逻辑与数据混淆,从而导致耦合和潜在的升级问题。