概述
步骤
- pom.xml => Spring Boot
- src/main/java/hello/Application.java
- src/main/java/hello/HelloController.java
- Run => http://localhost:8080
Web 应用
处理 HTTP 请求
- 从 HTTP 请求中提取 query string =>
@RequestParam
- 从 HTTP 请求中接收 body(payload | entity) 中的参数
- Content-Type=application/json =>
@RequestBody
=> 提取整个 body 中的对象 - Content-Type=x-www-form-urlencoded =>
@RequestParam
=> 提取 body 中的参数
- Content-Type=application/json =>
返回 HTTP 响应
- status code
- HTTP response header
- HTTP response body
- HTML
- HttpServletResponse
- JSON => 返回对象,并自动格式化成 JSON =>
@ResponseBody
- 模板引擎渲染 => JSP | Velocity | Freemaker
Client request Header Accept <=> Server Response Content-Type
服务端根据客户端的 Accept 动态返回 Response Content-Type
Spring Boot Annotation for Controller
Spring MVC 提供参数自动绑定 => 自动的从发起的 HTTP 请求中解析参数并且绑定到对应的方法上
-
@RestController
=> 使用 RESTful 风格的参数 => 使用@PathVariable
提取参数 -
@RequestMapping
=> 标注在 class 上,基地址 -
@DeleteMapping
=>@DeleteMapping("/{owner}/{repo}/issues/{issueNumber}/lock")
@PathVariable
-
@PostMapping
=> 处理 POST 请求 @ResponseBody
RESTful API
一种设计 API 的约定 => 优雅
- 使用 HTTP 动词代表动作
- GET => 获取资源
- POST => 新建资源
- PUT => 更新资源
- DELETE => 删除资源
- 使用 URL(名词)来代表资源
- 资源里面没有动词
- 使用负数来代表资源列表
例子
- 下订单 => POST =>
/order
- 查订单 => GET =>
/orders
|/order/1
- 删订单 => DELETE =>
/order/1
知识点
-
幂等 => 一个 HTTP 方法是幂等的 => 同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的 => 幂等方法不应该具有副作用 => 幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同
- GET | HEAD | PUT | DELETE => 幂等
- POST => 不幂等
-
Safe => 一个 HTTP 方法是安全的 => 这个方法不会修改服务器的数据 => 对服务器只读操作的方法 => 所有 Safe 的方法都是幂等的 => 幂等但是不安全的方法:DELETE
- GET | HEAD | OPTIONS => Safe
- PUT | DELETE | POST => no Safe
- GitHub API 一般认为是业界 API 设计的标杆
- IDEA plugin GsonFormatPlus => JSON 转 Class Object =>
- HTTP request => Port => Servlet 容器 => WebApp => Servlet 容器 => Port => HTTP response
Servlet 容器 => 字节流与 Java 对象相互转换的中间层 =>HttpServletRequest
+HttpServletResponse
网友评论