Java Spring Web Application

2021-08-10  本文已影响0人  bowen_wu

概述

步骤

  1. pom.xml => Spring Boot
  2. src/main/java/hello/Application.java
  3. src/main/java/hello/HelloController.java
  4. Run => http://localhost:8080

Web 应用

处理 HTTP 请求

  1. 从 HTTP 请求中提取 query string => @RequestParam
  2. 从 HTTP 请求中接收 body(payload | entity) 中的参数
    • Content-Type=application/json => @RequestBody => 提取整个 body 中的对象
    • Content-Type=x-www-form-urlencoded => @RequestParam => 提取 body 中的参数

返回 HTTP 响应

  1. status code
  2. HTTP response header
  3. 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 请求中解析参数并且绑定到对应的方法上

  1. @RestController => 使用 RESTful 风格的参数 => 使用 @PathVariable 提取参数
  2. @RequestMapping => 标注在 class 上,基地址
  3. @DeleteMapping => @DeleteMapping("/{owner}/{repo}/issues/{issueNumber}/lock")
  4. @PathVariable
  5. @PostMapping => 处理 POST 请求
  6. @ResponseBody

RESTful API

一种设计 API 的约定 => 优雅

  1. 使用 HTTP 动词代表动作
    • GET => 获取资源
    • POST => 新建资源
    • PUT => 更新资源
    • DELETE => 删除资源
  2. 使用 URL(名词)来代表资源
    • 资源里面没有动词
    • 使用负数来代表资源列表

例子

RESTful API design

知识点

  1. 幂等 => 一个 HTTP 方法是幂等的 => 同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的 => 幂等方法不应该具有副作用 => 幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同
    • GET | HEAD | PUT | DELETE => 幂等
    • POST => 不幂等
  2. Safe => 一个 HTTP 方法是安全的 => 这个方法不会修改服务器的数据 => 对服务器只读操作的方法 => 所有 Safe 的方法都是幂等的 => 幂等但是不安全的方法:DELETE
    • GET | HEAD | OPTIONS => Safe
    • PUT | DELETE | POST => no Safe
  3. GitHub API 一般认为是业界 API 设计的标杆
  4. IDEA plugin GsonFormatPlus => JSON 转 Class Object =>
  5. HTTP request => Port => Servlet 容器 => WebApp => Servlet 容器 => Port => HTTP response
    Servlet 容器 => 字节流与 Java 对象相互转换的中间层 => HttpServletRequest + HttpServletResponse
上一篇 下一篇

猜你喜欢

热点阅读