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
@Data
public class User {
private int id;
private String name;
private int age;
}
controller
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;
}
}