最近一道面試題,要求同一API接口支持不同格式返回值。一開始是設想通過過濾器(Filter)設置返回值,但是並不可行,因為方法返回值一般都是類型需要做轉換,而過濾器則是前置的。另一方面可以通過攔截器的postHandle中進行處理,這里介紹另外一種方法。
1.Controller方法增加ReponseBody注解
@ResponseBody
@RequestMapping("/getModule")
public ReponseResult GetModuleList(){
List<Module> list = new LinkedList<Module>();
Module m1=new Module();
m1.setId(1);
m1.setModulename("test");
list.add(m1);
ReponseResult result=new ReponseResult(list,true,null);
return result;
}
2.返回類型增加XML格式支持
@XmlRootElement
public class ReponseResult implements Serializable {
//region 屬性
public List<Module> getData() {
return data;
}
public void setData(List<Module> data) {
this.data = data;
}
private List<Module> data;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
private String message;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
private boolean success;
//endregion
public ReponseResult() {
}
public ReponseResult(List<Module> _data, boolean _success, String _message) {
this.data = _data;
this.success = _success;
this.message = _message;
}
}
3.Spring MVC源碼中根據Requester.Header中的Accept決定返回什么格式
參考文檔:http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-convert.html
https://blog.csdn.net/fw0124/article/details/48312317
4.使用PostMan請求


