【问题标题】:REST API design and changing "contract"?REST API 设计和改变“合同”?
【发布时间】:2013-04-12 12:45:46
【问题描述】:

我正在设计 RESTful API。结果将采用 JSON 对象的形式。我不需要将 POJO 类中的所有字段都发送给客户端,所以我应该定义某种“合同”。

假设我有一个 Property 类,我为它定义了 id、name 和 address。稍后,我可能想在不影响客户的情况下将地址更改为 geoData。

是否有一些优雅的方式(模式)来做到这一点?

【问题讨论】:

  • 如果您更改资源的属性,您的客户将不得不处理它。所以会有一些影响。
  • 没错,但版本控制是我需要的答案 :) 但无论如何,感谢您的宝贵时间! :)

标签: java api rest


【解决方案1】:

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

  • 旧实现 /ver1/retrieve/user(仍在维护中)
  • 新实现 /ver2/retrieve/user

通过这样做,客户端仍然可以使用旧实现检索用户而不会出现任何问题。但是,当您决定再次更改实现时,最好冻结旧版本的 API(例如在实现 v3 API 时,您应该通知客户端不再支持旧版本 1 API)

更多信息可以在这里找到:

How to version REST URIs

Versioning restful services

【讨论】:

  • 谢谢鲁迪,这有帮助。我可能会创建自定义媒体类型,并按照您提供的第二个链接中推荐的方式对其进行版本化(选项 2)... :) 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 2020-09-18
  • 2015-07-24
  • 1970-01-01
相关资源
最近更新 更多