我具有彈簧控制器內的writeResponse方法,其寫入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,有一個'type'方法參數。所以上面的方法可能會變成:
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'?這種方法在哪裏存在?在一個服務,控制器,其他? –
看看[本教程:使用Spring設計和實現RESTful Web服務](http://spring.io/guides/tutorials/rest/)。特別是@RequestMapping註釋。 –