SpringBoot中@RequestParam @RequestBody @PathVariable的作用

最近两年工作的主要内容是给前端提供API接口,包括各种联调等,项目中使用的框架有spring全家桶、Jfinal等,最近学习了下很火的SpringBoot,配合Swagger2写Restful接口及文档非常方便简洁,一下是一些相关笔记。

@PathVariable

当使用@RequestMapping URI template 样式映射时,@PathVariable能使传过来的参数绑定到路由上,这样比较容易写出restful api,看代码

    @RequestMapping(value="/{id}", method=RequestMethod.GET)
    public List<Map<String, Object>> getUser(@PathVariable Integer id) {
        return userService.getUserById(id);
    }

上面这个接口可通过get请求 http://xxxxx/1111来得到想要的数据,1111既是getUser的方法参数又是@RequestMapping的路由。如果方法参数不想写成和路由一样的应该怎么办?看代码:

    @RequestMapping(value="/{uid}", method=RequestMethod.GET)
    public List<Map<String, Object>> getUser(@PathVariable("uid") Integer id) {
        return userService.getUserById(id);
    }

在@PathVariable后面接入“uid”就可以了。

@RequestParam

@RequestParam和@PathVariable的区别就在于请求时当前参数是在url路由上还是在请求的body上,例如有下面一段代码:

    @RequestMapping(value="", method=RequestMethod.POST)
    public String postUser(@RequestParam(value="phoneNum", required=true) String phoneNum ) String userName) {
        userService.create(phoneNum, userName);
        return "success";
    }

这个接口的请求url这样写:http://xxxxx?phoneNum=xxxxxx,也就是说被@RequestParam修饰的参数最后通过key=value的形式放在http请求的Body传过来,对比下上面的@PathVariable就很容易看出两者的区别了。

@RequestBody

@RequestBody能把简单json结构参数转换成实体类,如下代码:

    @RequestMapping(value = "/testUser", method = RequestMethod.POST)
    public String testUser(@RequestBody User user){
        System.out.print(user.getAge());
        return "success";
    }

参数为:

{"id":1,"user":"pkxutao","name":"name","age":18}

注意请求的content type要设置为application/json

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,079评论 19 139
  • Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servl...
    alexpdh阅读 2,685评论 0 3
  • 1、Spring MVC请求流程 (1)初始化:(对DispatcherServlet和ContextLoderL...
    拾壹北阅读 1,977评论 0 12
  • 1、@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherS...
    圣光会制裁你丨阅读 1,682评论 0 23
  • 选择睡觉还是抢购? 昨晚,和每次抢购的前一晚一样,我想着要不要等到0点买了再睡呢?想想买这些东西省的钱,最多几百块...
    LizzyD阅读 1,047评论 0 3