我应该在客户端上验证API响应吗?

时间:2019-01-14 21:15:27

标签: json rest api validation web-applications

假设我有一个使用RESTFUL API的应用程序。例如:我正在向端点“ / products”发送请求,并且正在接收JSON格式的响应。然后,我在SPA应用程序中使用这些数据。

一段时间后,响应的形状已更改。我没有被告知这一事实。结果,我的SPA应用程序崩溃了。更改后,API响应中缺少了我在应用程序中使用的某些属性。当我可以验证SPA应用程序中的每个响应并在响应中缺少占位符值时,可以避免这种情况。但这可能会导致一些性能问题。

无论如何,将API响应验证放在客户端上是一种好习惯吗?

3 个答案:

答案 0 :(得分:3)

我认为您遇到的问题实际上与验证无关,但与您的服务器以非向后兼容的方式升级有关。您需要的可能是处理更新的更好方法。

我不认为偶尔下载模式并盲目填写缺失的属性是可行的方法。您可以构建服务,使其具有向后兼容性吗?如果确实必须打破向后兼容性,那么您是否有充分的理由,并且客户端是否有理智的方式来支持它?还是需要更新客户端?

如果您控制服务器和客户端,那么对我有用的策略是:

  1. 请勿立即更改更改。首先将服务器更新为新版本,然后在更新中停止支持以前的版本。
  2. 客户端有时可以检查服务器支持的版本。如果他们发现服务器已放弃对客户端使用的版本的支持,请更新客户端。 (也许只是刷新?)

但这很广泛。由于具体情况取决于情况,因此不确定到底有多少对您有帮助。

答案 1 :(得分:2)

为了您的描述以及我对Restful API的经验,没有最佳实践,但是在某些情况下,API支持多种自定义的内容类型并接受标头,其中包括用于处理与不同版本的向后兼容性的标头。数据传输对象。

如果您无法访问所调用的API,则最好在客户端应用程序上使用空对象模式来获取缺少的值,以防止崩溃。

答案 2 :(得分:0)

您需要做的就是在项目中引入api版本控制。因此,您的客户可以依赖特定版本,直到您决定进一步。客户端和服务器开发变得更加独立。