Martin Fowler 在 REST API 中所说的 "avoid automatic deserialization" 是什么意思?

What Martin Fowler meant by "avoid automatic deserialization" in a REST API?

Martin Fowler 在 API 中对 avoid automatic deserialization 说:

I prefer to avoid automatic deserialization altogether. Automatic deserialization usually falls into the WSDL pitfall of coupling consumers and producers by duplicating a static class structure in both.

这是什么意思?

是否在每个Rest Service中接收所有信息为JSON,中间没有任何"converter"?

"converter" 我的意思是一些 类型的适配器 ,比如 GsonBuilder。

通过自动反序列化,他的意思是 JSON 对象有一个预定义的硬结构,用于检索对象本身。

然而,这适用于大多数用例。

预定义结构的示例是 Java Class or XML XSD

Automatic deserialization usually falls into the WSDL pitfall of coupling consumers and producers by duplicating a static class structure in both.

他这里的意思是用类反序列化和用WSDL序列化或反序列化对象是一样的

与 类 和 XSD 文档的硬结构相反,JSON 更加宽松,因为它基于 Javascript,允许修改在其生命周期的任何时间点定义对象。

所以另一种方法是在 Java 组合中使用 HashMap and ArrayList (或解析 String 本身)来反序列化对象,即使服务器产生不同的东西(如新字段)客户端不需要任何更改。新客户可以利用新领域。

在硬结构中,由于模型的共享结构,生产者和消费者都强耦合 类,生产者的任何变化都必须反映在消费者中。

在我工作的一些 SOA 项目中,我们过去常常在所有 request/response 对象中添加一些额外的字段以供将来使用,这样就不需要更改客户端 运行 在生产中以满足新客户的需求。这些字段有一些随机名称,如 customParam1 to customParam5,其中这些字段的含义随文档一起发布。这些名称并不直观,因为我们将生产者和消费者耦合到共享结构或模型上。