-1

如果在客户端使用需要特定格式(例如[{id: 1, name: "Jack", available: true}])数据的库,服务器应该以客户端请求的确切结构处理数据还是发回通用数据(例如[{userId: 1, username: "Jack", isUserAvailable: true}]),然后可以在如果客户端库将来发生变化,客户端以避免紧密耦合和中断?

4

2 回答 2

1

客户端必须依赖于服务端提供的接口,这个接口可以看作是服务端和客户端约定的契约。这确实暗示了提供的数据结构,并且是一种耦合形式。因此,需要清楚地描述/定义 API,并制定版本控制和淘汰这些 API 的政策。

因此,乍一看,这似乎是一种紧密耦合,但并非必须如此。客户端和服务器可能会或可能不会使用相同的数据语言/表示。在这个例子中,客户端可以自由地使用 JSON 做任何它想做的事情。它可能使用所有数据或仅使用单个属性。所有这些都与服务器无关。同样,客户端也不关心服务器是如何创建这个 JSON 字符串的。由于服务契约只描述了接口和由此产生的服务器/客户端实现的自由度,耦合可以被认为是松散的(足够)。

于 2018-08-17T08:30:19.530 回答
0

如果您有旧系统或无法更改格式或需要支持无法更改的特定客户端,请考虑使用 API 网关在不同端点为您进行转换。

但通常情况下,您的 API 应尽可能开放。您几乎无法为每个不同的客户定义它。

于 2018-08-17T08:29:22.937 回答