0

我有一个与 REST 调用兼容性有关的问题...假设我有一个应用程序 1,它理解一些映射到类型 1 对象的 JSON,并且它与一个升级的应用程序通信,该应用程序发送类型 1 对象的 JSON 响应,但添加了字段,当我将 JSON 转换为 application-2 发送的 application-1 上的对象时,为什么会出现异常?我们不应该丢弃我们不理解的属性吗?我正在使用 Config.getInstance().getMapper().convertValue(body, MyClass.class) 将 JSON 转换为对象。

4

1 回答 1

0

当您使用 POJO 对 REST API 提供者和消费者进行建模时,这意味着您必须在数据结构发生变化时同时升级双方。

但是,如果您只是使用 Map 或 List 对接口进行建模,那么您在服务演进方面具有更大的灵活性。

几年前我写过一篇关于这个话题的文章,希望对你有所帮助。https://www.networknt.com/design/evolution/

使用 Jackson ObjectMapper 时,可以选择忽略负载中的某些字段。这可以避免一些问题,但不是全部。与 GraphQL、RPC 等相比,这是 REST 问题之一。

于 2019-10-29T18:22:23.520 回答