我具有弹簧控制器内的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注释。 –