什么是验证http响应数据的最有效方法

时间:2018-03-24 08:12:05

标签: javascript rest http frontend response

例如,当我在下面发出http请求时:

GET / myBox

期待json格式的数据响应:

{
  a: (expecting a number),
  b: (expecting a string),
  c: (expecting 'apple', 'orange', or 'banana')
}

然后让我们假设我们的服务器程序永远不会出错。如果出现网络错误,我们是否需要验证响应的内容数据?如果我们应该,那么验证每个响应数据的最有效方法是什么。

3 个答案:

答案 0 :(得分:3)

最好在成功和错误情况下创建来自服务器的可预测JSON有效负载。例如,如果我们遇到错误,可能是这样的有效负载:

{ error: true, errorMessage: 'Some error message', payload: null }

对于与网络相关的错误,您需要在客户端应用程序中处理相应的HTTP状态代码。更多相关内容:https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

如果要为从服务器传递到客户端的数据开发脊状模式,您可能需要查看更适合Protobuf的格式。

请参阅:

答案 1 :(得分:1)

总的来说,我认为您可以合理地期望答案是正确的。大多数开发者会。如果您处理多个服务器和那些实现相同协议的服务器的多个实现者,那么您可能无法信任它。

在这种情况下验证响应的一种方法是使用类似json-schema的内容。

但是,如果您不处理许多服务器,也许您可​​以问自己在哪些情况下响应可能是错误的。你有理由不相信吗?

答案 2 :(得分:0)

当您在响应对象中设置所需字段的数据类型时,可以验证响应数据。

例如: -

假设这是您期望作为响应对象的类: -


@Bean
    public Jackson2ObjectMapperBuilderCustomizer customizeObjectMapper() {
        return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.featuresToEnable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN);
    }

如果在上面的字段中你将field1作为long而不是String,那么你将得到一个错误,检查服务器是否给出了你预期的响应。