Content-Type,提交数据时Http请求内容编码类型小结

一、类型

Content-Type:Content-Type是指http/https发送信息至服务器时的内容编码类型,contentType用于表明发送数据流的类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据
enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。默认表单数据会编码为 “application/x-www-form-urlencoded”。也就是在发送到服务器之前,所有字符都会进行编码(空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值等)。
在这里插入图片描述

1.表单提交常用有两种:application/x-www-form-urlencoded(默认):优先post请求
multipart/form-data :post请求
2. 另外一种是application/json 只能post请求
3. 设置的时候再请求头

1.application/x-www-form-urlencoded

application/x-www-form-urlencoded 浏览器的原生form表单
application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式,比如 key=xxx&name=111&password=123456;

当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。

在这里插入图片描述
接收部分代码:

//application/x-www-form-urlencoded 原生form默认的提交方式
    @PostMapping("/form")
    public void form(@RequestParam("id") int id,@RequestParam("name") String name){
        System.out.println(id+name);

    }

2.multipart/form-data

multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,这个一般文件上传时用
当action为post时候,浏览器把form数据封装到http body中,然后发送到server。 如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。

Content-Type: multipart/form-data; boundary=xxxx

前半部分代表数据类型,而boundary代表分隔符,boundary对应的xxxx是由请求方自定义设置的。
在这里插入图片描述
在这里插入图片描述

接收代码部分:

     /**
     *
     consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
     * @param file
     * @return
     */
    @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public String handleFileUpload(
            @RequestParam("id") int id,
            @RequestParam("name") String name,
            @RequestPart(value = "file") MultipartFile file){
             //@RequestParam(value = "file") MultipartFile file) 
        return name+id+file.getOriginalFilename();
    }

注解:
@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
1.required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错
2.defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

3.application/json

application/json:必须用接受@RequestBody,因为GET请求没有body,所以无法接受,只能使用post

 @PostMapping
    public Result add(@RequestBody   Sku sku){
        //调用SkuService实现添加Sku
        skuService.add(sku);
        return new Result(true,StatusCode.OK,"添加成功");
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值