(轉(zhuǎn)載)前端以form-data方式/raw方式發(fā)送post請(qǐng)求的區(qū)別

(轉(zhuǎn)載)前端以form-data方式/raw方式發(fā)送post請(qǐng)求的區(qū)別

原創(chuàng) 隨機(jī)漫步_ 最后發(fā)布于2018-11-30 12:57:28 閱讀數(shù) 5515 收藏
展開(kāi)

POST請(qǐng)求
@RequestParam:
① 用來(lái)處理(前端)Content-Type: 為 application/x-www-form-urlencoded或者form-data編碼的內(nèi)容
② 該注解有兩個(gè)屬性: value、required; value用來(lái)指定要傳入值的id名稱,required用來(lái)指示參數(shù)是否必須綁定;
注意這里Headers里不能以application/json作為Content-type,否則后臺(tái)也接收不到請(qǐng)求

采用form-data方式,Headers里應(yīng)該為空.png

采用form-data方式,Headers里不為空時(shí)報(bào)錯(cuò).png

采用form-data方式發(fā)送post請(qǐng)求.png

Control中方法

    @RequestMapping(value = "/del", method = RequestMethod.POST)
    public ResponseObj<Boolean> delete(@RequestParam String enterpriseId,
                                       @RequestParam String operator,
                                       @RequestParam String status) {
        int i = enterpriseBaseMapper.deleteByPrimaryKey(enterpriseId);
        if (i == 1)
            return new ResponseObj<Boolean>(true, RetCode.SUCCESS);
        return new ResponseObj<Boolean>(false, RetCode.FAIL);
    }

@RequestBody
① 該注解常用來(lái)處理Content-Type: 不是application/x-www-form-urlencoded編碼的內(nèi)容,例如application/json, application/xml等;
前端規(guī)定的是raw方式,那么就需要使用@RequestBody接收參數(shù),注意這里Headers里需要以application/json作為Content-type

以raw方式發(fā)送post請(qǐng)求.png

使用如下代碼可以正常進(jìn)入斷點(diǎn)

@RequestMapping(value = "/del", method = RequestMethod.POST)
    public ResponseObj<Boolean> delete(/*@RequestParam String enterpriseId,
                                       @RequestParam String operator,
                                       @RequestParam String status*/
                                       @RequestBody Map<String,Object> map) {
        String enterpriseId = (String) map.get("enterpriseId");
        String operator = (String) map.get("operator");
        String status = (String) map.get("status");
        int i = enterpriseBaseMapper.deleteByPrimaryKey(enterpriseId);
        if (i == 1)
            return new ResponseObj<Boolean>(true, RetCode.SUCCESS);
        return new ResponseObj<Boolean>(false, RetCode.FAIL);
    }

那么以后盡量使用@RequestBody Map<String,Object> map這種形式
@RequestParam @RequestBody @PathVariable 等參數(shù)綁定注解詳解

form-data、x-www-form-urlencoded、raw、binary類型

一:form-data

就是http請(qǐng)求中的multipart/form-data,它會(huì)將表單的數(shù)據(jù)處理為一條消息,以標(biāo)簽為單元,用分隔符分開(kāi)。既可以上傳鍵值對(duì),也可以上傳文件。當(dāng)上傳的字段是文件時(shí),會(huì)有Content-Type來(lái)說(shuō)明文件類型;content-disposition,用來(lái)說(shuō)明字段的一些信息;

由于有boundary隔離,所以multipart/form-data既可以上傳文件,也可以上傳鍵值對(duì),它采用了鍵值對(duì)的方式,所以可以上傳多個(gè)文件。

二:x-www-form-urlencoded

application/x-www-from-urlencoded,會(huì)將表單內(nèi)的數(shù)據(jù)轉(zhuǎn)換為鍵值對(duì),如:name=leyangjun&age =28&work=meituan

三:raw

可上傳任意格式的文本,可以上傳text、json、xml、html等各種文本類型
四:binary

      等同于Content-Type:application/octet-stream,只可上傳二進(jìn)制數(shù)據(jù),通常用來(lái)上傳文件,由于沒(méi)有鍵值,所以一次只能上傳一個(gè)文件。

注意:

form-data與x-www-form-urlencoded不同之處在于(multipart/form-data:既可以上傳文件等二進(jìn)制數(shù)據(jù),也可以上傳表單鍵值對(duì),只是最后會(huì)轉(zhuǎn)化為一條信息; x-www-form-urlencoded:只能上傳鍵值對(duì),且鍵值對(duì)都是間隔分開(kāi)。)

打印請(qǐng)求日志, 表單和body的區(qū)別

After request [uri=/managerConfig/modifyConfigAboutAppUserLogin;payload=id=3&registGivenPrice=0.00&openRegistry=true&visibleItemNotLogin=false&defaultAppViewClassifyLevel=2]

After request [uri=/item/createItem;payload={"name":"???","pictureUrl":"https://saturn-titan.oss-cn-qingdao.aliyuncs.com/demo/item/1546513139886pB7G82X.jpeg","itemBrand":"","describe":"??","itemClassifyId":5,"packageType":"BULK","suplyUnit":"?","warningAmount":0,"tags":"","priceGroups":[{"name":"???","optionalPrice":"0","priceType":"FLOW","priceGroupId":1,"promotionOptionalPrice":"","promotionSwitch":false}],"specification":{"itemUnit":"?","limitedPerchase":999,"minExpectedProfitmargin":10,"maxExpectedProfitmargin":50,"salePrice":11,"status":"OFF_SALE","unitWeight":11,"basicUnit":"?"}}]

點(diǎn)贊 2
收藏
分享

————————————————
版權(quán)聲明:本文為CSDN博主「隨機(jī)漫步_」的原創(chuàng)文章,遵循 CC 4.0 BY 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/asdfsadfasdfsa/article/details/84647231

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容