RESTful是什么Rest表现形式状态转换
传统风格资源描述形式
http://localhost/user/getById?id=1
http://localhost/user/saveById
Rest风格描述形式
http://localhost/user/1
http://localhost/user
优点:隐藏资源得访问行为,无法通过地址得知对资源是何种操作
书写简化
按照REST风格访问资源时使用行为动作区分对资源进行何种操作
http://localhost/user/1 查询指定用户信息 GET(查询)
http://localhost/user/1 删除用户信息 Delete(删除)
http://localhost/users 查询全部信息 GET(查询)
http://localhost/users 修改用户信息 PUT(修改/更新)
http://localhost/users 添加用户信息 POST(新增/保存)
上述行为是约定方式,约定不是规范,可以打破,所以是Rest风格,不是Rest规范
入门案例:
1.设计http请求动作(动词)
//定义访问路径
@RequestMapping(value = "/users",method = RequestMethod.POST)
//当前操作没有返回页面,给出提示
@ResponseBody
public String save(@RequestBody User user){
System.out.println("user save ..."+user);
return "save 方法";
}
//定义访问路径
@RequestMapping(value = "/users",method=RequestMethod.PUT )
//当前操作没有返回页面,给出提示
@ResponseBody
//当前参数是从路径中传递过来的,是一个路径中得变量,添加注解表明是从路径中拿取
public String getById(@RequestBody User user){
System.out.println("user getById ..."+user);
return "getById 方法";
}
2.设定请求参数(路径变量)
//定义访问路径
@RequestMapping(value = "/users/{id}",method=RequestMethod.DELETE )
//当前操作没有返回页面,给出提示
@ResponseBody
//当前参数是从路径中传递过来的,是一个路径中得变量,添加注解表明是从路径中拿取得
public String delete(@PathVariable Integer id){
System.out.println("user delete ..."+id);
return "delete 方法";
}
@RequestBody@RequestParam@PathVariable三个注解区别及其应用
区别:
@RequestParam用于接收url地址传参或表单传参
@RequestBody用于接收json数据
@PathVariable用于接收路径参数,使用{参数名称}来描述路径参数
应用:
开发中,后期参数超过一个时,以json方式为主,用@RequestBody较广
如果发送非json格式数据,选用@RequestParam接收请求参数
蚕蛹RESTful进行开发时,当参数较少时,例如一个,使用@PathVariable来接收参数
@RestController内部就是组合了等同于@Controller和@ResponseBody
@PostMapping等同于@RequestMapping(value = "/users",method = RequestMethod.POST)
@DeleteMapping("{/id}")等同于@RequestMapping(value = "/users/{id}",method=RequestMethod.DELETE )
@PutMapping同上
@GetMapping同上
名称:@RestController
类型: 类注解
位置:基于SpringMVC得RESTful开发控制器类定义上方
作用:设置当前控制器类为RESTful风格,等同于@Controller和@ResponseBody
范例:
@RestController
public class User{
}
名称:@PostMapping,@DeleteMapping,@PutMapping,@GetMapping
类型: 方法注解
位置:基于SpringMVC得RESTful开发控制器类定义上方
作用:设置当前控制器方法请求路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求
范例:
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.printIn("user getById..."+id)
return "getById方法"
}
属性
value(默认):请求访问路径