ResTful风格的Url
7.1 RESTful简介
RESTful就是一个资源定位及资源操作的风格。不是标准也不
是协议,只是一种风格。基于这个风格设计的软件可以更简
洁,更有层次。
往常的传参方式:
http://localhost:8080/springmvc02/user/queryUserById?id= 1 查询
http://localhost:8080/springmvc02/user/saveUser新增
http://localhost:8080/springmvc02/user/updateUser 更新
http://localhost:8080/springmvc02/user/deleteUserById?id=1 删除
使用RESTful操作资源:使用URL+请求方式确定具体的动作
使用Restful操作:
http://localhost:8080/springmvc02/user/1 查询,GET
http://localhost:8080/springmvc02/user 新增,POST
http://localhost:8080/springmvc02/user 更新,PUT
http://localhost:8080/springmvc02/user/1 删除,DELETE
RESTFul风格好处:
安全:使用问号键值对的方式给服务器传递数据太明显,
容易被人利用来对系统进行破坏。使用 REST 风格携带数
据不再需要明显的暴露数据的名称。
风格统一:URL 地址整体格式统一,从前到后始终都使用
斜杠划分各个单词,用简单一致的格式表达语义。
简洁:过去做增删改查操作需要设计4个不同的URL,现在
一个就够了。
查询 /emp/editEmp?empId=2 /emp/2 请求方式:GET
保存 /emp/saveEmp /emp 请求方式:POST
更新 /emp/updateEmp /emp 请求方式:PUT
删除 /emp/removeEmp?empId=2 /emp/2 请求方式:DELETE
7.2 RESTFul案例
@Controller
public class EmpController {
//根据ID查询
@RequestMapping(value ="/emp/{empId}",method = RequestMethod.GET)
@ResponseBody
public Result findById(@PathVariable("empId") Integer empId){
Result result=new Result(20001,"查询成功",empId);
return result;
}
//查询所有
@RequestMapping(value = "/emp",method =RequestMethod.GET)
@ResponseBody
public Result findAll(){
Result result=new Result(20002,"查询成功",null);
return result;
}
//保存
@RequestMapping(value = "/emp",method = RequestMethod.POST)
@ResponseBody
public Result save(@RequestBody Emp emp){
Result result=new Result(20003,"保存成功",emp);
return result;
}
//删除
@RequestMapping(value ="/emp/{empId}",method = RequestMethod.DELETE)
@ResponseBody
public Result delete(@PathVariable("empId")Integer empId){
Result result=new Result(20004,"删除成功",empId);
return result;
}
//修改
@RequestMapping(value = "/emp",method = RequestMethod.PUT)
@ResponseBody
public Result update(@RequestBody Emp emp){
Result result=new Result(20005,"修改成功",emp);
return result;
}
}
7.3 注解优化
@RestController //这一个注解相当于同时写了@Controller+@ResponseBody
@RequestMapping("/emp")
public class EmpController {
//根据ID查询
@GetMapping("/{empId}")
@ResponseBody
public Result findById(@PathVariable("empId") Integer empId){
Result result=new Result(20001,"查询成功",empId);
return result;
}
//查询所有
@GetMapping
@ResponseBody
public Result findAll(){
Result result=new Result(20002,"查询成功",null);
return result;
}
//保存
@PostMapping
@ResponseBody
public Result save(@RequestBody Emp emp){
Result result=new Result(20003,"保存成功",emp);
return result;
}
//删除
@DeleteMapping("/{empId}")
@ResponseBody
public Result delete(@PathVariable("empId")
Integer empId){
Result result=new Result(20004,"删除成功",empId);
return result;
}
//修改
@PutMapping
@ResponseBody
public Result update(@RequestBody Emp emp){
Result result=new Result(20005,"修改成功",emp);
return result;
}
}