Human0722's blog Human0722's blog
首页
  • Spring

    • Spring Framework
    • Spring Boot
    • Spring Cloud
  • CCNA
  • Vue

    • Vue2
日本语
导航
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Human0722

Gravity always win
首页
  • Spring

    • Spring Framework
    • Spring Boot
    • Spring Cloud
  • CCNA
  • Vue

    • Vue2
日本语
导航
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • RESTful API 最佳实践

Xueliang
2021-03-25
Java
目录

RESTful API 最佳实践

Build Standred REST API

# RESTful是什么

RESTful(Representational State Transfer), (资源)表现层状态转化。资源是网络上的一个实体,对应一个 URI. 表现层是资源的呈现方式,以 html、xml 等。状态转换,说的是由于 HTTP 协议是无状态协议,所有的状态都保存在服务器。综上,客户端想要操作服务器,就要让服务器端发生状态转换。而这种转换建立在表现层之上,所有叫 RESTful。
通俗的讲,就是 HTTP 协议里面,四个表示操作的动词: GET POST PUT DELETE。其分别对应四种操作: GET 用来获取资源、POST 用来新建资源、PUT 用来更新资源、DELETE 用来删除资源。
用这几种方式操作服务器, 这些方式就是 RESTful(adj) 的。

# RESTful URL规范

比如对员工 emp 增删改查的 url 规范

URL Method 功能
/emps GET 展示所有
/emp GET 去往添加页面
/emp POST 添加员工
/emp/{id} DELETE 删除员工
/emp/{id} GET 去修改页面,回显
/emp PUT 提交修改,重定向到 list
  • Add Emp: GET /emp + POST /emp
  • Update Emp: GET /emp/{id} + PUT /emp

# 开发中技巧

# 1. 渲染模式需要准备的 html 页面

  • list.html 展示页面
       展示页面列出所有的信息,另外还有跳转到添加、删除记录、修改记录的超链接。
  • edit.html 一页两用
       为 add.html 和 update.html 合并版本。为了在 edit.html 一个文件中,提交时候体现差异,在渲染时候会选择性渲染 id 或其他唯一标志信息。具体细节接下。

# 2. 由底向上实现一页两用

为 form 标签提供发送完整 RESTful 请求的能力: 在 html 的 form 标签中,只支持 GET 和 POST 两种请求方式,为了能够 "发送" 出其他请求,可以和后端约定好添加某些字段来标记为其他请求方法。通常是在 form 表单为 POST 方式的前提下,添加一个隐藏的属性,属性名称为 _method,值为请求方式。

<input type="hidden" name="_method" value="PUT"> 
1

但是这并不代表浏览器无法发送其他请求,如果是使用 Javascript 发送,就可以支持其他的方式。
更新数据和添加数据,在最接近数据库的 DAO 层,都是通过 save() 方法保存,若待更新数据已有主键(id)则更新数据,否则新建数据。
     所以在通过控制器跳转到 edit.html 的时候,就要考虑是否分配 flag 来区分是新增还是更新,这个值也影响是否渲染隐藏域和其他页面显示信息。

上次更新: 2022/05/06, 18:09:58
最近更新
01
DefineSprintBootStarter
03-23
02
Spring MVC 启动流程分析
03-23
03
Redis
03-23
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Human0722 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式