Spring MVC Rest风格

REST Representational State Transfer ),表现形式状态转换
传统风格资源描述形式
http://localhost/user/ get ById?id=1

http://localhost/user/saveUser

REST风格描述形式

http://localhost/user/1

http://localhost/user

优点:

隐藏资源的访问行为,无法通过地址得知对资源是何种操作

书写简化

按照REST风格访问资源时使用行为动作区分对资源进行了何种操作

http://localhost/users  查询全部用户信息     GET 查询

http://localhost/users/1  查询指定用户信息  GET  查询

http://localhost/users  添加用户信息             POST  新增/保存

http://localhost/users  修改用户信息              PUT  修改/更新

http://localhost/users/1  删除用户信息            DELETE  删除

根据REST风格对资源进行访问称为RESTful

上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范

描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:usersbooksaccounts……

@RequestMapping(value = "/users", method = RequestMethod.POST)
@ResponseBody
public String save(@RequestBody User user){
   
System.out.println("user save..." + user);
   
return "{'module':'user save'}";
}


@RequestMapping(value = "/users" ,method = RequestMethod.PUT)
@ResponseBody
public String update(@RequestBody User user){
   
System.out.println("user update..."+user);
   
return "{'module':'user update'}";
}

@RequestMapping(value = "/users/{id}" ,method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id){
   
System.out.println("user delete..." + id);
   
return "{'module':'user delete'}";
}

@RequestBody  @RequestParam  @PathVariable

区别

@RequestParam用于接收url地址传参或单传参

@RequestBody用于接收json数据

@PathVariable用于接收路径参数,使用{参数名称}描述路径参数

应用

后期开发中,发送请求参数超过1个时,以json格式为主@RequestBody应用较广

如果发送非json格式数据,选用@RequestParam接收请求参数

采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id

RESTful快速开发

value=books重复,并且每个方法都用responseBody注释,

@RequestMapping(value = "/books", method = RequestMethod.POST)
@ResponseBody
public String save(@RequestBody Book book){
   
System.out.println("book save..." + book);
   
return "{'module':'book save'}";
}

@RequestMapping(value = "/books" ,method = RequestMethod.PUT)
@ResponseBody
public String update(@RequestBody Book book){
   
System.out.println("book update..."+book);
   
return "{'module':'book update'}";
}

名称:@RestController

类型:类注解

位置:基于SpringMVCRESTful开发控制器类定义上方

作用:设置当前控制器类为RESTful风格,等同于@Controller@ResponseBody个注解组合功能

范例:

@RestController
public class BookController {
}

名称:@GetMapping  @PostMapping  @PutMapping  @DeleteMapping

类型:方法注解

位置:基于SpringMVCRESTful开发控制器方法定义上方

作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求

属性

value(默认):请求访问路径

范例​​​​​​​

@RestController
@RequestMapping("/users")
public class  UserController {

    @PostMapping
    public String save(@RequestBody User user){
        System.out.println("user save..."+user);
        return "{'info':'springmvc'}";
    }

    @DeleteMapping("/{id}")
    public String delete(@PathVariable Integer id){
        System.out.println("user delete..."+id);
        return "{'info':'springmvc'}";
    }

    @PutMapping
    public String update(){
        System.out.println("user save...");
        return "{'info':'springmvc'}";
    }

    @GetMapping("/{id}")
    public String findbyId(@PathVariable Integer id){
        System.out.println("user save...");
        return "{'info':'springmvc'}";
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值