工作中写接口是经常会和http打交道,这里说说POST的Content-Type字段。
POST的Content-Type字段
application/x-wwww-form-urlencoded
是表单的提交方式,原生浏览器支持:application/x-wwww-form-urlencoded,urlencoded的意思是url转码,以为这表单的信息会被转码,转码的字符集可以指定,charset=utf-8。所以完整的内容为:Content-Type:application/x-www-form-urlencoded;charset=utf-8
以下是被转码后的数据,可以看出形式和GET请求的数据一致,都是key1=value1&key2=value2
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3
mutipart/form-data
表单上传文件需要这个设置。
表面意思是多部分表单数据,何为多部分。实际上,表单的不同字段就是不同的部分。因此mutipart/form-data将表单的不同字段视为不同部分。如何分割不同部分呢?才有自定义的分隔符!
Content-Type: multipart/form-data; boundary=你的自定义boundary
假设自定义分隔符是:–DRShaoshuai
那么数据部分就是:
Content-Disposition: form-data; name="UserID"; boundary=--DRShaoshuai
lee1994
--DRShaoshuai
Content-Disposition: form-data; name="imageName"; filename="imageName.png"
Content-Type: image/png
...contents of image.png...
--DRShaoshuai
...
--DRShaoshuai
...
可以看到,每个部分又是独立的,Content-Disposition: form-data;name=key1
,然后换行跟value1
如果是文件,就是Content-Disposition: form-data; name="imageName"; filename="imageName.png"
,换行跟文件类型Content-Type: image/png
,接着换行跟文件内容。
如果还有字段,如此类推。
application/json
请求数据主体部分被转换为json格式
text/xml
请求数据主体部分被转换为xml格式
PUT
put是幂等的,用于修改或更新服务器资源。但put不安全。
DELETE
delete也是幂等的,用于请求服务器删除资源。
幂等:同一个系统,相同条件,一次请求 和 多次相同的请求,对系统的影响都是一致的