Http请求参数Content-Type的几种编码格式设置方式

当客户端向服务器发起请求并带有参数传递到服务端,有4种设置方法可以设置参数传递的方式,这些方式是本地发起请求的参数封装方式,也是告诉服务器应该如何解析客户端传递过来的参数。

这4种设置方法通过表单来指定,发起提交后会封装到请求头中传到后台服务,后台服务根据指定的方式再进行解析。

封装到头部的设置格式:

Content-Type:application/json

使用Content-Type的来指定,4种方法如下:

  • application/json:消息主体是以JSON格式编码
  • application/x-www-form-urlencoded:数据被编码为key=value,这是默认的编码格式
  • multipart/form-data: 需要在表单中进行文件上传时,使用该格式
  • text/plain:数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符

例如我们在html中,设置表单时使用enctype进行设置

<form action="/url.do" enctype="multipart/form-data" method="post">
 <input type="file" name="name"/>
 <input type="submit" value="提交">
</form>	

这属性指定了表单的Content-Type,请求时,数据就按照表单指定的方式对参数进行编码。
如果表单没有指定Content-Type,则默认是application/x-www-form-urlencoded编码方式,这是以key=value的方式来组织参数的。

Content-Type设置为application/x-www-form-urlencoded,提交方式为GET时,参数则会放到url后以key=value的方式,并用‘&’分割多个参数,传递到服务器,如果是POST方式,则会以key=value的形式放到http body中传递到服务器。