【Restful】Restful风格Demo

时间:2024-03-30 21:19:11

(1)基本介绍

在web开发中,提交请求和接收请求,method常用的是 get 和 post,用了Restful风格后,method还可以是 put 和 delete 等等其他值。

既然 method 足够丰富,那么 url 就没有必要那么复杂了,可以考虑使用同一个 url,但是约定使用不同的 method 接收就实施不同的业务,最常见的就是CRUD操作。

RESTful API 可以你看到 url + http method 就知道这个 url 是干什么的,让你看到了 http 状态码(status code)就知道请求结果如何。

(2)Restful风格和普通风格的区别

CRUD如下表所示,URL就都使用一样的 “/categories”,区别只是在于method不同,服务器根据method的不同来判断浏览器期望做的业务行为

【Restful】Restful风格Demo

(2.1)增的区别

(2.1.1)add的普通风格

发送请求,action传出的 url 路径是 /save,用的 method 是 post
【Restful】Restful风格Demo
接收请求,根据路径 save 匹配控制器
【Restful】Restful风格Demo

(2.1.2)add的Restful风格

发送请求,action传出的 url 路径是 /accounts,用的 method 是 post
【Restful】Restful风格Demo
接收请求,根据 accounts 匹配控制器,指明使用的 method 为 POST 进行处理,这里 POST 表示“add增加”
【Restful】Restful风格Demo

(2.2)删的区别

(2.2.1)delete的普通风格

发送请求,action 传出的 url 路径是 /deleteAccount
【Restful】Restful风格Demo接收请求,根据路径 deleteAccount 匹配控制器
【Restful】Restful风格Demo

(2.2.2)delete的Restful风格

发送请求,href 传出的 url 路径还是 /accounts
【Restful】Restful风格Demo
接收请求,根据 accounts 匹配控制器,指明使用的 method 为 DELETE 进行处理,这里 DELETE 表示“delete删除”
【Restful】Restful风格Demo

(2.3)改的区别

(2.3.1)edit的普通风格

发送请求,href 传出的 url 路径是 /editAccount
【Restful】Restful风格Demo
接收请求,根据路径 editAccount 匹配控制器
【Restful】Restful风格Demo

(2.3.2)edit的Restful风格

发送请求,action 传出的 url 路径是 /accounts
【Restful】Restful风格Demo
接收请求,根据 accounts 匹配控制器,指明使用的 method 为 GET 和 PUT 进行处理,这里 GET 表示检索,PUT 表示“update更新”
【Restful】Restful风格Demo

(2.4)查的区别

(2.4.1)select的普通风格

发送请求,action传出的 url 路径是 /findAll
接收请求,根据路径 findAll 匹配控制器
【Restful】Restful风格Demo

(2.4.2)select的Restful风格

发送请求,action传出的 url 路径是 /accounts
接收请求,根据 accounts 匹配控制器,指明使用的 method 为 GET 进行处理,这里 GET 表示“select查询”
【Restful】Restful风格Demo

(3)REST 接口规范的总结

(3.1)动作

  • GET :请求从服务器获取特定资源。举个例子:GET /classes(获取所有班级)
  • POST :在服务器上创建一个新的资源。举个例子:POST /classes(创建班级)
  • PUT :更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /classes/12(更新编号为 12 的班级)
  • DELETE :从服务器删除特定的资源。举个例子:DELETE /classes/12(删除编号为 12 的班级)

(3.2)路径(接口命名)

GET /classes:列出所有班级
POST /classes:新建一个班级
GET /classes/classId:获取某个指定班级的信息
PUT /classes/classId:更新某个指定班级的信息(一般倾向整体更新)
PATCH /classes/classId:更新某个指定班级的信息(一般倾向部分更新)
DELETE /classes/classId:删除某个班级
GET /classes/classId/teachers:列出某个指定班级的所有老师的信息
GET /classes/classId/students:列出某个指定班级的所有学生的信息
DELETE classes/classId/teachers/ID:删除某个指定班级下的指定的老师的信息

(3.3)过滤信息(Filtering)

如果我们在查询的时候需要添加特定条件的话,建议使用 url 参数的形式。比如我们要查询 state 状态为 active 并且 name 为 guidegege 的班级:

GET /classes?state=active&name=guidegege

比如我们要实现分页查询:

GET /classes?page=1&size=10 //指定第1页,每页10个数据

(3.4)状态码(Status Codes)

【Restful】Restful风格Demo