在JavaSpring中,代码是可变的,是否可以用http错误进行响应?
我有一个微服务,它得到了另一个的响应。根据我得到的回应,我需要做出相应的回应。我没有可以收到的错误代码的完整列表,所以问题是-我可以为自己的响应动态生成错误代码吗?从我在spring中看到的情况来看,响应是在代码中预定义的。我需要灵活变通 例如: 我收到一个409我会用409回复 我收到400,我会回复400 我收到一个XXX代码,我会回复XXX 尝试以下代码:(示例代码)在JavaSpring中,代码是可变的,是否可以用http错误进行响应?,java,spring,http,error-handling,Java,Spring,Http,Error Handling,我有一个微服务,它得到了另一个的响应。根据我得到的回应,我需要做出相应的回应。我没有可以收到的错误代码的完整列表,所以问题是-我可以为自己的响应动态生成错误代码吗?从我在spring中看到的情况来看,响应是在代码中预定义的。我需要灵活变通 例如: 我收到一个409我会用409回复 我收到400,我会回复400 我收到一个XXX代码,我会回复XXX 尝试以下代码:(示例代码) @RequestMapping(value=“/validate”,method=RequestMethod.GET,pr
@RequestMapping(value=“/validate”,method=RequestMethod.GET,products=“application/json”)
公共响应验证程序(@QueryParam(“jsonInput”)最终字符串jsonInput){
int numberHTTPDesired=400;
ErrorBean responseBean=新的ErrorBean();
responseBean.setError(“错误”);
setMessage(“验证错误!”);
返回新的ResponseEntity(responseBean,HttpStatus.valueOf(numberHTTPDesired));
}
我使用以下概念研究过这样一个用例。尝试跨micro服务创建一般异常。将异常中的两个参数作为错误消息,另一个作为错误代码。从被调用的服务抛出异常,并在rest模板或假客户端调用中捕获调用服务中的相同异常
public class MyException extends Exception {
private String errorCode;
public MyException() {
super();
}
public MyException(String message, String errorCode) {
super(message);
this.errorCode = errorCode;
}
}
--
我自己尝试了一种变体,突然间这不是一个可行的解决方案。此解决方案中未设置控制器的响应代码。我将得到一个类似{errorCode=400}的响应,但控制器的实际响应代码类似于200。这是一个通用的解决方案,我们可以在遇到MyException(或其他异常)时发送响应代码(从控制器抛出。该响应代码可以通过正在调用的服务中的全局API异常处理程序发送。
public class MyException extends Exception {
private String errorCode;
public MyException() {
super();
}
public MyException(String message, String errorCode) {
super(message);
this.errorCode = errorCode;
}
}
try {
return myApiService.getUser();//call to myApiService microservice
} catch (MyException e) {
logger.error("Error: {}", e.getMessage());
throw new MyException(e.getMessage(), e.getCode());
}