Java REST API设计和更改“;合同;?

Java REST API设计和更改“;合同;?,java,api,rest,Java,Api,Rest,我正在设计RESTful API。结果将以JSON对象的形式出现。我不需要将POJO类中的所有字段发送到客户机,因此我应该定义某种“契约” 假设我有一个属性类,我为它定义了id、名称和地址。稍后,我可能想将地址更改为geoData,而不影响客户 有什么优雅的方法(图案)可以做到这一点吗 为REST设计创建版本控制。当您开始创建新的实现时,使用新的URI来定义它。 例如,使用类似参数创建新URI,但版本不同: 旧实现/ver1/retrieve/user(仍在维护中) 新实现/ver2/retr

我正在设计RESTful API。结果将以JSON对象的形式出现。我不需要将POJO类中的所有字段发送到客户机,因此我应该定义某种“契约”

假设我有一个属性类,我为它定义了id、名称和地址。稍后,我可能想将地址更改为geoData,而不影响客户


有什么优雅的方法(图案)可以做到这一点吗

为REST设计创建版本控制。当您开始创建新的实现时,使用新的URI来定义它。 例如,使用类似参数创建新URI,但版本不同:

  • 旧实现/ver1/retrieve/user(仍在维护中)
  • 新实现/ver2/retrieve/user
通过这样做,客户机仍然能够检索具有旧实现的用户,而不会出现任何问题。但是,当您决定再次更改实现时,最好冻结旧版本的API(例如,在实现v3 API时,您应该通知客户端旧版本1 API将不再受支持)

更多信息可在此处找到:


如果您更改了资源的属性,您的客户将不得不处理它。所以会有一些影响。没错,但是版本控制是我需要的答案:)但是无论如何,谢谢你的时间!:)谢谢你,鲁迪,这很有帮助。我可能会创建自定义媒体类型,并按照您提供的第二个链接(选项2)中的建议对其进行版本设置:)谢谢!