@RequestBody和@RequestParam區別


Spring注解中能接受客戶端傳遞過來的參數包括路徑變量(url),內容變量(http body),頭變量(header),COOKIE變量等幾類。

1、路徑變量

解析方式:@PathVariable

2、內容變量

(1)格式形如:

<header>

POST http://localhost:8090/project-web/api/client/saveDelegateRelationPart HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/x-www-form-urlencoded; charset=UTF-8

<body>

id=692503&consigner=fozzie&proxy=kermit&fullProxy=no&startTime=2016-07-07+00%3A00%3A00&endTime=2016-07-22+00%3A00%3A00&memo=%E6%B7%BB%E5%8A%A0%E9%83%A8%E5%88%86%E4%BB%A3%E7%90%86%E6%B5%8B%E8%AF%95&process=%5B%7B%22id%22%3A%22fixSystemFailure%3A1%3A36%22%2C%22text%22%3A%22fixSystemFailure%22%2C%22pid%22%3A%22Examples%22%7D%2C%7B%22id%22%3A%22reviewSaledLead%3A1%3A39%22%2C%22text%22%3A%22reviewSaledLead%22%2C%22pid%22%3A%22Examples%22%7D%2C%7B%22id%22%3A%22createTimersProcess%3A1%3A38%22%2C%22text%22%3A%22createTimersProcess%22%2C%22pid%22%3A%22Examples%22%7D%2C%7B%22id%22%3A%22employee-productivity-report%3A1%3A46%22%2C%22text%22%3A%22employee-productivity-report%22%2C%22pid%22%3A%22activiti-report%22%7D%2C%7B%22id%22%3A%22task-duration-report%3A1%3A49%22%2C%22text%22%3A%22task-duration-report%22%2C%22pid%22%3A%22activiti-report%22%7D%2C%7B%22id%22%3A%22process-instance-overview-report%3A1%3A47%22%2C%22text%22%3A%22process-instance-overview-report%22%2C%22pid%22%3A%22activiti-report%22%7D%2C%7B%22id%22%3A%22helpdesk-firstline-vs-escalated-report%3A1%3A48%22%2C%22text%22%3A%22helpdesk-firstline-vs-escalated-report%22%2C%22pid%22%3A%22activiti-report%22%7D%5D

解析方式: @RequestParam Map<String, String> allRequestParams

(2)格式形如:

<header>

POST http://localhost:8090/project-web/api/client/queryProxyRelation HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=UTF-8

<body>

{"pageIndex":0,"pageSize":10,"sortField":""}

解析方式: @RequestBody Map<String, String> requestBodyParams

總結:

即若客戶端通過POST方法,在http body中傳遞的參數為key=value表單形式,則可用@RequestParam進行解析;若傳遞的參數為JSON形式,則使用@RequestBody注解進行解析。

 

參考:

1、 @RequestParam @RequestBody @PathVariable 等參數綁定注解詳解,Truong的專欄,http://blog.csdn.net/truong/article/details/28097837

function postSimpleData() {
        $.ajax({
            type: "POST",
            url: "/Service/SimpleData",
            contentType: "application/json", //必須有
            dataType: "json", //表示返回值類型,不必須
            data: JSON.stringify({ 'foo': 'foovalue', 'bar': 'barvalue' }),  //相當於 //data: "{'str1':'foovalue', 'str2':'barvalue'}",
            success: function (jsonResult) {
                alert(jsonResult);
            }
        });
    }
    function postListString() {
        $.ajax({
            type: "POST",
            url: "/Service/ListString",
            contentType: "application/json",
            dataType: "json",
            data: JSON.stringify({ "BuIds": ["1", "2", "3"] }),
            success: function (jsonResult) {
                alert(jsonResult);
            }
        });
    }
    function postEmployees() {
        $.ajax({
            type: "POST",
            url: "/Service/Employees",
            contentType: "application/json",
            dataType: "json",
            data: JSON.stringify({
                "Employees": [
                                    { "firstName": "Bill", "lastName": "Gates" },
                                    { "firstName": "George", "lastName": "Bush" },
                                    { "firstName": "Thomas", "lastName": "Carter" }
                                 ]
 
            }),
            success: function (jsonResult) {
                alert(jsonResult);
            }
        });
    }

 


免責聲明!

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



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