application/json、application/x-www-form-urlencoded、 multipart/form-data 本是古典 何须时尚 2022-10-23 08:08 11阅读 0赞 Content-Type Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME类型。在互联网中有成百上千中不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签,用于区分数据类型。最初MIME是用于电子邮件系统的,后来HTTP也采用了这一方案。 在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。它用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析并展示html等等。 Content-Type的格式: Content-Type:type/subtype ;parameter type:主类型,任意的字符串,如text,如果是\*号代表所有; subtype:子类型,任意的字符串,如html,如果是\*号代表所有,用“/”与主类型隔开; parameter:可选参数,如charset,boundary等。 例如: Content-Type: text/html; Content-Type: application/json;charset:utf-8; # application/json # 现在越来越多的应用使用application/json,用来告诉服务端消息主体是序列化的json字符串。由于json规范的流行,各大浏览器都开始原生支持JSON.stringfy。 而且spring对这个content-Type上传的数据有很好的支持,可以直接通过@RequestBody进行接收。也是当前完美适配当前流行的RestApi。 JSON 是一种轻量级的数据格式,以“键-值”对的方式组织的数据。这个使用这个类型,需要参数本身就是json格式的数据,参数会被直接放到请求实体里,不进行任何处理。服务端/客户端会按json格式解析数据(约定好的情况下)。 请求参数 ![application/json请求参数][application_json] http 请求报文 ![application/json报文][application_json 1] # application/x-www-form-urlencoded # 在最开始的请求方式中,请求参数都是放在url中,表单提交的时候,都是以key=&value=的方式写在url后面。这也是浏览器表单提交的默认方式。 不支持文件,一般用于表单提交。 * 请求参数 ![application/x-www-form-urlencoded请求参数][application_x-www-form-urlencoded] * http 请求报文 ![application/x-www-form-urlencoded报文][application_x-www-form-urlencoded 1] # multipart/form-data # 此种方式多用于**文件上传**,表单数据都保存在http的正文部分,各个表单项之间用boundary分开。 与application/x-www-form-urlencoded不同,这是一个多部分多媒体类型。首先生成了一个 boundary 用于分割不同的字段,在请求实体里每个参数以------boundary开始,然后是附加信息和参数名,然后是空行,最后是参数内容。多个参数将会有多个boundary块。如果参数是文件会有特别的文件域。最后以------boundary–为结束标识。multipart/form-data支持文件上传的格式,一般需要上传文件的表单则用该类型。 下面是一个例子: * 请求参数 ![multipart/form-data请求参数][multipart_form-data] * http 请求报文 ![multipart/form-data报文][multipart_form-data 1] [application_json]: /images/20221023/7d3b9f119e1b4e80a880aba5d3c57110.png [application_json 1]: /images/20221023/4c1c576b68db4ddf845ff2f3cfe7b343.png [application_x-www-form-urlencoded]: /images/20221023/16f0c9bae6544258829cbc7331c1a3e2.png [application_x-www-form-urlencoded 1]: /images/20221023/51dbc098ce694a57b099602087f851a0.png [multipart_form-data]: /images/20221023/67462834b6e84a4f8f26fa3bb8d15f6d.png [multipart_form-data 1]: /images/20221023/d51b9ca43674442886efd901a1bff8e6.png
相关 Alamofire源码解读系列(十一)之多表单(MultipartFormData) > 本篇讲解跟上传数据相关的多表单 前言 我相信应该有不少的开发者不明白多表单是怎么一回事,然而事实上,多表单确实很简单。试想一下,如果有多个不同类型的文件(png/t 阳光穿透心脏的1/2处/ 2023年10月17日 14:59/ 0 赞/ 129 阅读
还没有评论,来说两句吧...