基于成功或错误启动,获取两个对象

问题描述 投票:0回答:1

我正在使用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();
java spring-boot exception
1个回答
0
投票

我还没有运行您的代码,但无论是否有异常,您似乎都在返回“ MyClass”对象。

例外:

MyClass myClass = new MyClass();
myClass.errorResponse = errorResponse;
return myClass;

要回答您的问题,不,这不是实现它的正确方法。

© www.soinside.com 2019 - 2024. All rights reserved.