HTTP请求
- 请求行
- 请求头
- 请求体
JavaScript函数
一个字母占一个字节,一个汉字占三个字节
//获取长度
"字符串".length
//获得字符串的urIEncode编码(特殊字符需要编码)
encodeURIComponent("张三")
//编码结果
%E5%BC%A0%E4%B8%89
get请求示例
GET /test?name=zhang&age=18 HTTP/1.1
Host: localhost
post请求示例
Content-Type:请求体的格式
Content-Length:请求体的长度
POST /test HTTP/1.1
Host: localhost
Content-Type:application/x-www-form-urencoded
Content-Length: 17
name=zhang&age=18
json请求示例
POST /test2 HTTP/1.1
Host: localhost
Content-Type:application/json
Content-Length: 25
{"name":"zhang","age":18}
json数据格式
{"属性名":属性值}
- 字符串 ""
- 数字
- 布尔值:true,false
- null
- 数组
[元素1,元素2,...]
multipart 请求示例
POST /test2 HTTP/1.1
Host: localhost
Content-Type: multipart/form-data; boundary=123
Content-Length: 125
--123
Content-Disposition: form-data; name="name"
lisi
--123
Content-Disposition: form-data; name="age"
30
--123--
计算长度
`POST /test2 HTTP/1.1
Host: localhost
Content-Type: multipart/form-data; boundary=123
Content-Length: 125
--123
Content-Disposition: form-data; name="name"
lisi
--123
Content-Disposition: form-data; name="age"
30
--123--`.Length
换行报错空行'\n'和回车键,使用.Length计算时没有计算回车键,需要自行添加
- boundary=123 用来定义分隔符
- 起始分隔符是 --分隔符
- 结束分隔符是 --分隔符--
客户端发送
- 编码
- application/x-www-form-urlencoded : url 编码
- application/json: utf-8 编码
- multipart/form-data: 每部分编码可以不同
- 表单只支持以application/x-www-form-urlencoded 和multipart/form-data 格式发送数据
- 文件上传需要用 multipart/form-data 格式
- js代码可以支持任意格式发送数据
服务端接收
- 对application/x-www-form-urlencoded 和 multipart/form-data格式的数据,Spring 接收方式是统一的,只需要用java bean 的属性名对应请求参数名即可
- 对于applicaiton/json 格式的数据,Spring 接收需要使用@RequestBody注解 +java bean 的方式