Restful风格设计
1.简介
Restful 其实不是什么新技术或服务,而是一种对web进行一些标准和约束,是目前最流行的 API 设计规范,用于 Web 数据接口的设计
2. 为什么使用Restful风格
1. 普通http请求,没有一种规范去约束,开发不只是一个人的事,无规律的http请求,时间一久连你自己都可能忘记何况拿给别人看呢
2.,Restful请求具有自描述性,需要在形式上给人以直觉上的关联,使其一目了然,更好与其他人进行交,而且大大减少时间成本,要知道时间就是效率
3.Restful的规范
Restful很简单,就像数学公式一样,知道一些要点就会灵活运用,切记死记硬背
1.Url链接模式:动词+宾语
2. 动词:代表请求方式
- GET:获取(Get)
- POST:添加(Create)
- PUT:更新(Update)
- DELETE:删除(Delete)
3. 宾语:必须是名词
- http://localhost:8080/user user:就是名词,想用复数表示的话,就跟英语一样,直接在后面加s,即http://localhost:8080/users
- 尽量避免多级请求:http://localhost:8080/management/1/user/1 应该为:http://localhost:8080/management/1?user=1 (具体意思和用处后面详解)
4根据上面两点组合起来
- GET:http://localhost:8080/user/1 获取用户id=1信息
- POST:http://localhost:8080/user 添加用户信息(post请求的参数无法查看)
- PUT:http://localhost:8080/user 更新用户信息 todo:待完成
- DELETE:http://localhost:8080/user/1 删除用户id=1信息
5.测试用例,详细代码
接下来之后显示跟本次主题相关的代码,详细代码请见:https://github.com/ChaASuc/restful-demo.git, 如果觉得可以就fork一下,谢谢。有问题请发言,鄙人会虚心听取
该项目使用SpringBoot + tkMapper + H2数据库模式,直接运行即可使用
里面封装后台开发通用代码,也可以看我的实际项目----个人博客系统:https://github.com/ChaASuc/myblog.git, 该项目内容更全,技术点更多,希望对你有帮助
1.添加用户
//请求方式:Post;
//请求路径 http://localhost:8080/user;
// 请求参数User对象
// 含义:把user对象添加数据库中
@PostMapping("/user")
public ResultVO insertUser(
@RequestBody User user
) {
userService.insertUser(user);
ResultVO.success();
return ResultVO.success();
}
2.获取用户信息
//请求方式:Get;
//请求路径 http://localhost:8080/user/{id};
// 含义:把根据id获取用户信息
// @PathVariable 获取链接{}里面的值:例如http://localhost:8080/user/1 即 id = 1
@GetMapping("/user/{id}")
public ResultVO selectUser(
@PathVariable Long id
) {
User user = userService.selectUser(id);
return ResultVO.success(user);
}
//请求方式:Get;
//请求路径 http://localhost:8080/users; users是复数形式
// 含义:获取所有用户信息
@GetMapping("/users")
public ResultVO selectUsers() {
List<User> users = userService.selectUsers();
return ResultVO.success(users);
}
3.更新用户信息
//请求方式:Put;
//请求路径 http://localhost:8080/user;
// 请求参数User对象
// 含义:根据用户对象更新数据库
@PutMapping("/user")
public ResultVO updateUser(
@RequestBody User user
) {
userService.updateUser(user);
return ResultVO.success();
}
4. 删除用户信息
//请求方式:Delete;
//请求路径 http://localhost:8080/user/{id};
// 含义:根据id删除用户信息
@DeleteMapping("/user/{id}")
public ResultVO deleteUser(
@PathVariable Long id
) {
userService.deleteUser(id);
return ResultVO.success();
}