1. 程式人生 > >@RequestBody物件為空,異常Required request body is missing的解決辦法

@RequestBody物件為空,異常Required request body is missing的解決辦法

 由於與前端互動的過程當中,都是用json資料與前端進行互動,這樣想取出整個傳送過來的json資料的時候,就需要用到@RequestBody這個註解,前端傳送資料的格式如下:

//測試傳送json資料
$("#id").click(function () {
    $.ajax({
        type: "post",
        url: "test",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(getTestJson()),
        dataType: "json",
        success: function (data) {
            alert(data);
        },
        error:function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.status);
            alert(XMLHttpRequest.readyState);
            alert(textStatus);
        }
    });

    function getTestJson() {
        var Json = {
            "a":"aaaaaaa",
            "b":0,
            "c":2,
        };
        return Json;
    }

});
    前臺的AJAX這樣去寫,這樣傳輸資料,那麼後臺就可以拿到完整的資料了,具體怎麼拿看如下程式碼:
@RequestMapping(value = "/test",method = RequestMethod.POST)
    @ResponseBody
    public String test(@RequestBody String requestJson){
            if(requestJson==null||requestJson==""){
                return ApiResponse.buildFailResponse(ResultConstant.OPERATOR_FAIL,"請求介面需要傳遞正確的JSON資料");
            }
}
這樣,加上一個@RequestBody註解,就可以輕鬆的把請求過來的json資料全部拿到,然後就隨便你把json資料是轉成
JSONObject還是普通的JAVA物件進行操作了。
    但是,我們在傳輸json資料的時候,假如json資料為空,那麼就會報一個錯誤,就是Required request body is missing
這個的意思就是我們這個介面必須要傳輸json格式的資料,假如沒有資料,就會報錯返回錯誤的資訊。
    但是,我們一般想做的樣子是我們由自己去判斷資料是否為空,假如為空,返回我們與前端約定格式的資料,那樣會
方便前端來進行除錯。
    假如不想讓系統報錯,那麼就需要在@RequestBody增加一個Required屬性了,並且把該屬性設定為false,如下:
 @RequestMapping(value = "/test",method = RequestMethod.POST)
    @ResponseBody
    public String test(@RequestBody(required = false) String requestJson){
            if(requestJson==null||requestJson==""){
                return ApiResponse.buildFailResponse(ResultConstant.OPERATOR_FAIL,"請求介面需要傳遞正確的JSON資料");
            }
}