美文网首页
Java Spring Web Application

Java Spring Web Application

作者: bowen_wu | 来源:发表于2021-08-10 10:37 被阅读0次

    概述

    步骤

    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(名词)来代表资源
      • 资源里面没有动词
      • 使用负数来代表资源列表

    例子

    • 下订单 => POST => /order
    • 查订单 => GET => /orders | /order/1
    • 删订单 => DELETE => /order/1
    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

    相关文章

      网友评论

          本文标题:Java Spring Web Application

          本文链接:https://www.haomeiwen.com/subject/pnftbltx.html