Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
  • HTML页面
  • 元素
  • 请求
    • 请求组成
    • 请求方式
      • get
      • post
      • json
      • multipart
    • 数据格式
  • HTML
Nreal
2023-12-25
目录

请求

telnet测试:

telnet localhost 8080

# 请求组成

  • 请求行

    请求方式,URL,协议版本;

  • 请求头

    格式:头名:头值;

  • 请求体

# 请求方式

# get

GET /test2?name=%E5%BC%A0&age=20 HTTP/1.1
Host: localhost
1
2

%E5%BC%A0 是【张】经过 URL 编码后的结果

# post

POST /test2 HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 21

name=%E5%BC%A0&age=18
1
2
3
4
5
6

application/x-www-form-urlencoed 格式细节:

  • 参数分成名字和值,中间用 = 分隔;
  • 多个参数使用 & 进行分隔;
  • 张等特殊字符需要用 encodeURIComponent() 编码为 %E5%BC%A0后才能发送;

# json

POST /test3 HTTP/1.1
Host: localhost
Content-Type: application/json
Content-Length: 25

{"name":"zhang","age":18}
1
2
3
4
5
6

后端接受json数据,请求参数需要加@RequestBody注解

json 对象格式

{"属性名":属性值}
1

json 数组格式

[元素1, 元素2, ...]
1

# 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--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • boundary=123 用来定义分隔符
  • 起始分隔符是 --分隔符
  • 结束分隔符是 --分隔符--

后端接口:

@RequestMapping("/test2")
@ResponseBody
public Sting test2(String name,Integer age){//或者用一个包含name与age的对象接受
    ...
}
1
2
3
4
5

# 数据格式

客户端发送:

  • 编码
    • 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 的方式;
元素

← 元素

Theme by Vdoing | Copyright © 2021-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式