Restful:
目前最流行的一种 Api 定义规范
Api 也叫做接口:请求[地址,方式,参数]
设计restful用到到的知识
1.@RestController //RestBody+Cortroller 替换掉原来的Controller
@ResponseBody:说明返回值需要直接返回给客户端,不需要经过模板的填充,为该 controller 中的每一个类增加 @ResponseBody 注解
@RestController = @Contrller + @ResponseBody
2.@GetMapping 查询/获取信息时
@PostMapping 添加信息 注: 登录注册必须用PostMapping
@PutMapping 修改信息
@DeleteMapping 删除信息
3.@RequestParam url 后边的参数
@RequestBody 请求体中的 json 格式参数 post 增加 和 put 修改 ( @RequestBody User user)
@PathVarible url 的 path 中参数
GET /users 获取全部用户信息
GET /users?page=1&size=10 获取全部用户信息中第 1 页的 10 条数据
GET /users/1 获取 id=1 的用户信息
POST /users 添加新用户
PUT /users 修改用户信息
DELETE /users/1 删除 id=1 的用户信息
DELETE /users/1,2,3 删除 id={1, 2, 3} 的用户信息
GET /users/1/coupons 获取 id=1 的用户领取的全部优惠券信息
GET /users/1/coupons/2 获取 id=1 的用户领取的 id=2 的优惠券信息
POST /users/1/coupons/3/received id=1 的用户领取了 id=3 的优惠券
DELETE /users/1/coupons/3/received id=1 的用户删除了 id=3 的优惠券
GET /users 获取全部用户信息
GET /users/1 获取 id=1 的用户信息
PUT /users 更新用户信息
DELETE /users/1 删除 userId 为 1 的用户信息
在浏览器地址栏输入 url 永远都是 GET 请求
需要使用专业的工具对 API 进行测试:
- postman
- swagger
注:测试用的,不需要来回查看数据库 不用也能实现.
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
代码如下:
@RestController //RestBody+Cortroller
public class UserController {
@Autowired
private UserService userservice;
@Autowired
private HttpSession session;
@GetMapping(value="/users")
public List<User> list(){
return userservice.list();
}
// @NeedLogin
@GetMapping(value="/users/{id}")
public User edit(@PathVariable("id") Integer id){
return userservice.getById(id);
}
@PutMapping(value="/users")
public User update(@RequestBody User user){
return userservice.update(user);
}
// @NeedLogin
@DeleteMapping(value="/users/{id}")
public void delete(@PathVariable Integer id){
userservice.deleteById(id);
}
@PostMapping(value="/login")
public User login(@RequestBody User user){
return userservice.login(user);
}
@PostMapping(value="/register")
public User register(@RequestBody User user){
return userservice.register(user);
}
}