Spring MVC同一方法返回JSON/XML格式


最近一道面試題,要求同一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請求

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM