RESTful

RESTful

REST即表述性状态传递(英文:Representational State Transfer,简称REST)

是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格

它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性

使用RESTful设计风格可以写出符合标准的http应用程序


请求方式和URI

在我们之前的学习中,前端项目对后端发起的请求URI中直接包含了对请求的动作

例如:user/findById,无论是get还是post的方式,我们将想要做的动作(find)暴露在URI中了

而http作者设计的本质不是这样,他想通过不同的请求方式来区分对后端资源的操作,而不是通过URI区分

http提供了四个请求方式:

  • get:查询
  • post:保存(新增)
  • delete:删除
  • put:更新

总结规则

使用GET或DELETE请求方式时,如果参数为单一标识(id),则使用路径传递参数

如果参数不为单一标识时,则使用param参数

使用POST或PUT请求方式时,直接使用JSON请求体传递参数


项目实战

功能 接口和请求方式 请求参数 返回值
分页查询 GET /user page=1&size=10 {响应数据}
用户添加 POST /user { user 数据 } {响应数据}
用户详情 GET /user/1 路径参数 {响应数据}
用户更新 PUT /user { user 更新数据} {响应数据}
用户删除 DELETE /user/1 路径参数 {响应数据}
条件模糊 GET /user/search page=1&size=10&keywork=关键字 {响应数据}
pojo
1
2
3
4
5
6
@Data
public class User {
private int id;
private String name;
private int age;
}
controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.xiaobai.controller;

import com.xiaobai.pojo.User;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("user")
public class UserController {
/**
* 分页查询
* @param page 可以不传,默认参数为1
* @param size 可以不传,默认参数为10
* @return 查到的User集合
*/
@GetMapping
public List<User> page(@RequestParam(required = false,defaultValue = "1") int page, @RequestParam(required = false,defaultValue = "10")int size){
return null;
}

/**
* 新增一个用户
* @param user 以JSON方式接收User参数
* @return 新增的用户回显
*/
@PostMapping
public User save(@RequestBody User user){
return null;
}

/**
* 获取用户详情
* @param id 用户id,以路径参数的方式接收
* @return 查询到的用户对象
*/
@GetMapping("{id}")
public User detail(@PathVariable Integer id){
return null;
}

/**
* 更新用户信息
* @param user 更新后的用户对象,以JSON的方式接收
* @return 更新后的用户对象
*/
@PutMapping
public User update(@RequestBody User user){
return null;
}

/**
* 删除用户
* @param id 被删除的用户id,以路径参数的方式接收
*/
@DeleteMapping("{id}")
public void delete(@PathVariable Integer id){
}

/**
* 模糊查询(带分页)
* @param keyword 关键词,用以模糊查询
* @param page 可以不传,默认参数为1
* @param size 可以不传,默认参数为10
* @return 返回查询结果
*/
@GetMapping("search")
public List<User> search(@RequestParam String keyword,
@RequestParam(required = false,defaultValue = "1") int page,
@RequestParam(required = false,defaultValue = "10")int size){
return null;
}
}


RESTful
http://blog.170827.xyz/2024/06/27/RESTful/
作者
XIAOBAI
发布于
2024年6月27日
许可协议