У меня есть метод writeResponse внутри контроллера Spring, который записывает DTO, как Json:Возвращаясь различные объекты JSON из различных запросов
private void writeResponse(String type , Object objectToWrite , ResourceResponse response){
try {
MyDTO myDto= new MyDTO();
ObjectMapper mapper = new ObjectMapper();
response.getWriter().write(mapper.writeValueAsString(myDto));
}
catch (final JsonGenerationException e) {
log.error(e.getMessage());
} catch (final JsonMappingException e) {
log.error(e.getMessage());
} catch (final IOException e) {
log.error(e.getMessage());
}
}
Метод writeResponse вызывается несколькими способами и каждого метода вызывающего абонента является другой REST конечной точки , В настоящее время существует только один тип DTO: MyDTO. Однако будет добавлено больше типов DTO. Чтобы определить, какой DTO должен быть записан, существует параметр метода типа. Таким образом, вышеуказанный метод может стать следующим:
private void writeResponse(String type , Object objectToWrite , ResourceResponse response){
try {
if(type == "1"){
MyDTO myDto= new MyDTO();
ObjectMapper mapper = new ObjectMapper();
response.getWriter().write(mapper.writeValueAsString(myDto));
}
else if(type == "2")
{
MyDTO2 myDto2= new MyDTO2();
ObjectMapper mapper = new ObjectMapper();
response.getWriter().write(mapper.writeValueAsString(myDto2));
}
}
catch (final JsonGenerationException e) {
log.error(e.getMessage());
} catch (final JsonMappingException e) {
log.error(e.getMessage());
} catch (final IOException e) {
log.error(e.getMessage());
}
}
Это чувствует себя немного неуклюжим. Я пытаюсь получить чистый метод, возвращающий другой JSON в зависимости от того, на какой вызванной конечной точке. Есть ли лучший способ, чем то, что я предлагаю?
Примечание: код выше представляет собой сочетание псевдокода и java.
Что такое 'ResourceResponse'? Где этот метод существует? В службе, контроллер, другой? –
Взгляните на [этот учебник: проектирование и внедрение веб-служб RESTful с помощью Spring] (http://spring.io/guides/tutorials/rest/). В частности, @RequestMapping аннотация. –