我正在使用Spring Boot应用程序调用的服务会根据Http GET请求成功或异常返回两种不同的对象类型。成功时,它将返回“ MyClass”对象;当发生异常时,它将返回“ ErrorResponse”对象。我想知道,如果这是正确的方法,那么我将如何实施它。
public class MyClass{
public ErrorResponse errorResponse;
//and some other fields here
}
@JsonIgnoreProperties
public class ErrorResponse {
@JsonProperty("error")
public Error error;
@JsonProperty("version")
public String version;
}
public class Error {
@JsonProperty("code")
public String Code;
@JsonProperty("message")
public String Message;
}
我得到的错误响应的方式是
{
"error": {
"code": "invalidEntry",
"message": "The request you are making is invalid, please check your request data"
},
"version": "2.1.1"
}
我的实现如下:
HttpEntity<MyClass> entity = new HttpEntity<MyClass>(headers);
ResponseEntity<MyClass> response = new ResponseEntity<MyClass>(HttpStatus.OK);
try {
response = restTemplate.exchange(url, HttpMethod.GET, entity, MyClass.class);
} catch (HttpClientErrorException ex) {
String responseBody = ex.getResponseBodyAsString();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
try {
ErrorResponse errorResponse = mapper.readValue(responseBody, ErrorResponse.class);
MyClass myClass = new MyClass();
myClass.errorResponse = errorResponse;
return myClass;
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return response.getBody();
我还没有运行您的代码,但无论是否有异常,您似乎都在返回“ MyClass”对象。
例外:
MyClass myClass = new MyClass();
myClass.errorResponse = errorResponse;
return myClass;
要回答您的问题,不,这不是实现它的正确方法。