Spring在控制器级别支持基于注释的验证。如何验证RestTemplate响应?
(1)是否有必要在RestTemplate级别对来自REST调用的响应进行此类验证?
如果答案是肯定的: (2)在RestTemplate中是否会支持此功能以验证将来某个时候的其余呼叫的响应?
如果答案是否: (3)为什么?
Spring在控制器级别支持基于注释的验证。如何验证RestTemplate响应?
(1)是否有必要在RestTemplate级别对来自REST调用的响应进行此类验证?
如果答案是肯定的: (2)在RestTemplate中是否会支持此功能以验证将来某个时候的其余呼叫的响应?
如果答案是否: (3)为什么?
对我来说,问题是相当大的。 :)。根据我的理解,您希望询问Spring可以支持的REST服务中的验证。
1.是否有必要在RestTemplate级别对来自REST调用的响应进行此类验证?
实际上,这取决于您的应用程序或您的业务。你可以在Controller中完成,或者你可以在服务级别完成,甚至可以进行自定义验证。对我而言,没有人强迫你做任何事情。
但是,根据我的经验,我们应该进行确认。所以我的答案是YES。
2.在RestTemplate有没有支持它来验证将来某个时候来自其他调用的响应?
我假设你想要验证的细节?!对? Spring支持许多事情来做验证。对于简单的方法,你可以使用PathVariable
或RequestParameter
。例如:
@GetMapping("/test/{name}")
private String test(@PathVariable(value = "name", required = true) String name){
//...
}
春天将验证所有的请求,并在需要的参数丢失或具有错误类型有400 Bad Request进行回应...
Spring也支持JSR 303 Bean验证:http://beanvalidation.org/1.0/spec/例如,在这里:
public class MessageBean {
@NotNull
private String title;
@NotNull
private String message;
// getters/setters/etc
}
或者你想不喜欢自定义用户响应:
@ExceptionHandler
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ErrorResponse handleException(MethodArgumentNotValidException exception) {
//....
return ErrorResponse.builder().message(errorMsg).build();
}
在这里更多的细节:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-validation
所以,这取决于这就要求我们在任何级别做验证业务。
3.如果答案是否定的:(3)为什么?
无需回答此问题。 :)
希望可以帮助
谢谢你的回答,但这不是我想要的。可能我的问题还不够清楚。根据技术业务需求,我可以在任何层验证“请求”。我的问题是_NOT_关于验证请求。我的问题是“验证来自其他服务的响应”。 – Jothi
澄清:我的问题不是关于验证请求。我的问题是“验证来自其他服务的响应”。 – Jothi