美文网首页githubJava技术分享
Spring Boot 学习总结之 Controller 注解

Spring Boot 学习总结之 Controller 注解

作者: 张少林同学 | 来源:发表于2017-06-18 17:35 被阅读2504次
    加油.png

    Controller 是 Spring 中最基本的组件,主要是处理跟用户交互的,一般每个业务逻辑都会有一个 Controller,提供给用户 http 请求接口,用户请求接口进行数据访问。

    掌握 Controller 的用法,一般掌握下面几个注解就差不多了,@Controller@RestController@RequestMapping@PathVariable@RequestParam@GetMapping

    下面详细说下这些注解的用法:

    • @Controller:标注 Controller 类,处理 http 请求

    • @RestController:标注 Controller 类,spring 4 新加注解,相当于@Controller + @ResponseBody ,主要是为了使 http 请求返回数据格式为 json 格式,正常情况下都是使用这个注解

    • @RequestMapping:配置 url 映射,可以作用于类上,也可以在方法上

    @RestController//处理http请求,返回json格式
    @RequestMapping(value = "/users")//配置url,让该类下的所有接口url都映射在/users下
    public class UserController {
      
        @RequestMapping(value = "/myInfo", method = RequestMethod.GET)
        public String say() {
            return "我是张少林";
        }
    }
    

    @RequestMapping 定义在类上,指定该类下的所有接口 url 映射在 /users 下,定义在方法上,指定 请求方法,可以指定GETPOSTDELETEPUT四种标准的 Restfulapi请求方法。
    那么此时的接口 url 为:http://127.0.0.1:8080/users/myInfo 请求方法:GET
    类上也可以不用配置 url 映射的。

    @RestController//处理http请求,返回json格式
    public class UserController {
    
      @RequestMapping(value = "/myInfo", method = RequestMethod.GET)
      public String say() {
          return "我是张少林";
      }
    }
    

    此时接口 url 为: http://127.0.0.1:8080/myInfo 请求方法:GET 结果:在浏览器上显示 我是张少林

    • @PathVariable: 获取 url 中的数据,我们在 url 中拼接一个字符串 {username},类似于地址占位符,由用户请求时添加,请求获取。注意注解中的参数必须与占位符参数一致
    @RestController//处理http请求,返回json格式
    @RequestMapping(value = "/users")//配置url,让该类下的所有接口url都映射在/users下
    public class UserController {
    
        @RequestMapping(value = "/myInfo/{username}", method = RequestMethod.GET)
        public String say(@PathVariable("username") String username) {
            return username;
        }
    }
    

    此时接口 url 为:http://127.0.0.1:8080/users/myInfo/张少林,请求方法 GET 结果:浏览器上显示 张少林

    • @RequestParam:获取请求参数值,方法随意可以设置,但是通常需求都是使用 POST 请求处理表单提交。
    @RestController//处理http请求,返回json格式
    @RequestMapping(value = "/users")//配置url,让该类下的所有接口url都映射在/users下
    public class UserController {
    
        @RequestMapping(value = "/myInfo", method = RequestMethod.POST)
        public String say(@RequestParam(value = "username") String username, @RequestParam(value = "password") String password) {
            return username + password;
        }
    }
    

    此时 接口 url 为:http://127.0.0.1:8080/users/myInfo?username=张少林&password=123456 请求方法:POST注意拼接地址参数必须与注解参数一致
    使用 postman 来测试接口,结果为,输出 张少林123456
    这时候假如用户没有传参数,就会报404错误。再添加两个设置 required = false:是否必穿。defaultValue:默认值

    @RestController//处理http请求,返回json格式
    @RequestMapping(value = "/users")//配置url,让该类下的所有接口url都映射在/users下
    public class UserController {
    
        @RequestMapping(value = "/myInfo", method = RequestMethod.POST)
        public String say(@RequestParam(value = "username",required = false,defaultValue = "张少林") String username,
                          @RequestParam(value = "password",required = false,defaultValue = "123456") String password) {
            return username + password;
        }
    }
    

    试试不传参数,结果还是一样 ,输出 张少林123456

    • 组合注解:@GetMapping@PostMapping@PutMapping 等 由请求方法+Mapping 的组合注解等价于 @RequestMapping 单独指定映射再指定请求方法。这种方式简化了我们的使用,通常都是直接使用组合注解,不需要再自己指定请求方法,毕竟程序猿都是比较懒的嘛~
      例如:
    @RequestMapping(value = "/myInfo", method = RequestMethod.POST)
    

    可以简化为:

     @PostMapping(value = "/myInfo")
    

    声明:以上只是本人学习的一篇总结,若有不足之处还请在评论区指出

    相关文章

      网友评论

        本文标题:Spring Boot 学习总结之 Controller 注解

        本文链接:https://www.haomeiwen.com/subject/dnbiqxtx.html