RESTful 接口设计拓展
1.多参数传递
/**
* 获取某一个员工,多参数
* 1. 请求路径--确认资源--员工--/employees
* 2. 请求方法--get
* 3. 请求参数--id,name,age
* 4. 请求响应--一个员工--Employee--json
*/
@RequestMapping(value = "/employees/{id}/{name}/{age}", method = RequestMethod.GET)
@ResponseBody
public Employee moreArgsOneList(@PathVariable Long id,@PathVariable String name, @PathVariable int age){
return new Employee(id, name, age);
}
postman 显示
@PathVariable Long id,@PathVariable String name, @PathVariable int age
也可以换成
Employee employee 对象的方式,也是可以成功传递参数的。
2.URL拓展
参数路径 优缺点
优点:一定程度上隐藏参数
缺点:如果参数较多,url比较长,不优雅
开发时一般时2者混用
3.RESTful接口注意事项
我们用的时Spring boot 版本的MVC ,spring boot 已经为我们自动装配。
如果是原生MVC的就需要加过滤器
4.注解的简化
package org.chad.controller;
import org.chad.domain.Employee;
import org.chad.util.JsonResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* 员工的对外接口声明类
* 员工的控制层/表现层
*/
@RestController //@Controller + @ResponseBody
@RequestMapping("employees")
public class EmployeeController {
/**
* 获取所有员工
* 1. 请求路径--确认资源--员工--/employees
* 2. 请求方法--get
* 3. 请求参数--无
* 4. 请求响应--多个员工--List<Employee>--json
*/
@GetMapping//@RequestMapping( method = RequestMethod.GET)
public List<Employee> list(){
//查询MySQL数据库得到员工列表信息
//假装查询数据库
List<Employee> list = Arrays.asList(new Employee(1L, "大王", 18),new Employee(2L, "小李", 19),new Employee(3L, "小查", 20));
return list;
}
/**
* 增加一个员工
* 1. 请求路径--确认资源--员工--/employees
* 2. 请求方法--POST
* 3. 请求参数--Employee
* 4. 请求响应--Employee--json
*/
@PostMapping//@RequestMapping(method = RequestMethod.POST)
public Employee add(Employee employee){
//假设添加员工
employee.setId(1L);
return employee;
}
/**
* 更新一个员工
* 1. 请求路径--确认资源--员工--/employees
* 2. 请求方法--PUT
* 3. 请求参数--id,name,age
* 4. 请求响应--Employee--json
*/
@PutMapping//@RequestMapping( method = RequestMethod.PUT)
public Employee update(Employee employee){
//假设添加员工
employee.setName(employee.getName() + "_update");
return employee;
}
/**
* 删除一个员工
* 1. 请求路径--确认资源--员工--/employees
* 2. 请求方法--DELETE
* 3. 请求参数--id
* 4. 请求响应--删除之后的状态--jsonResult--json
*
* jsonResult:统一的响应返回值
*
* {
* code:200,
* msg:"操作成功”,
* data:null
* }
*/
@DeleteMapping //@RequestMapping(method = RequestMethod.DELETE)
public JsonResult delete(Long id){
return JsonResult.success();
}
/**
* 获取某一个员工
* 1. 请求路径--确认资源--员工--/employees
* 2. 请求方法--get
* 3. 请求参数--id
* 4. 请求响应--一个员工--Employee--json
*/
@GetMapping("/{id}") //@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Employee oneList(@PathVariable Long id){
return new Employee(id, "张三", 18);
}
/**
* 获取某一个员工,多参数
* 1. 请求路径--确认资源--员工--/employees
* 2. 请求方法--get
* 3. 请求参数--id,name,age
* 4. 请求响应--一个员工--Employee--json
*/
@GetMapping("/{id}/{name}/{age}") //@RequestMapping(value = "/{id}/{name}/{age}", method = RequestMethod.GET)
public Employee moreArgsOneList(@PathVariable Long id,@PathVariable String name, @PathVariable int age){
return new Employee(id, name, age);
}
}
做了三件事情
1.路径简化
2.@RestCotroller 代替 @Cotroller + @ResponseBody
3.@GetMapping 代替了 @RequestMapping(method = RequestMethod.GET)