1.在springboot中有许多的参数注解,这里举例几个常用的注参数解。

  1. @PathVariable:路径变量
  2. @RequestHeader:获取请求头
  3. @RequestParam:获取请求参数
  4. @CookieValue:获取cookie值
  5. @RequestBody:获取请求体
  6. @RequestAttribute:获取request域属性

2.话不多说,直接上代码看看如何使用以上注解

1.路径变量:路径变量使用@PathVariable注解,@PathVariable注解可以一个一个参数来接收,也可以直接使用一个map来进行接收,注意写法的区分。

@RestController
public class ParamController {
    /*路径变量*/
    @GetMapping("/pathValue/{id}/{name}")
    public Map pathValue(@PathVariable("id") Integer id,
                         @PathVariable("name") String name,
                         @PathVariable Map pv){
        Map map=new HashMap<String,Object>();

        map.put("id",id);
        map.put("name",name);
        map.put("pv",pv);

        return map;
    }
}
<!--创建前端进行测试-->
 <a href="pathValue/50/小猪">路径变量</a>

可以看到使用map和一个一个的传参数,得到的结果是一样的。

spring boot获取API注解 springboot获取参数的注解_请求头


2.获取请求头:获取请求头使用@RequestHeander注解,有不了解请求头的小伙伴可以去HTTP请求报文了解一下什么是请求头,请求头也可以使用map来一次性获取全部的参数。

/*获取请求头*/
    @GetMapping("/heand")
    public Map getHeand(@RequestHeader("User-Agent") String userAgent,
                        @RequestHeader Map ua){
        Map map=new HashMap<String,Object>();
        map.put("userAgent",userAgent);
        map.put("ua",ua);

        return map;
    }

创建一个html文件测试一下

<!--获取请求头-->
<a href="/heand">获取请求头</a></br>

spring boot获取API注解 springboot获取参数的注解_spring boot_02


可以看到使用map和使用一个参数其实都可以获取到对应的请求头数据。

3.获取请求参数:获取请求参数使用@RequestParam注解,参数不必多说大家应该很了解,就是跟在连接后面使用问号隔开的参数。和上面的一样,请求参数也可以使用map来统一获取。

/*获取请求参数*/
    @GetMapping("/param")
    public Map getParam(@RequestParam("id") String id,
                        @RequestParam("name") String name,
                        @RequestParam Map rp){
        Map map=new HashMap<String,Object>();

        map.put("id",id);
        map.put("name",name);
        map.put("rp",rp);

        return map;
    }

创建一个html测试一下

<!--获取请求参数-->
<a href="/param?id=001&name=小猪">获取请求参数</a></br>

spring boot获取API注解 springboot获取参数的注解_请求头_03


可以看到和上面的一样,map和单个获取的结果也是一样的。

4.获取cookie值:不知道什么是cookie的小伙伴可以去Cookie介绍去了解了解。cookie就不能用map来获取了,但是cookie有专门的实体类,实体类里面可以获取到很多信息,话不多说直接上代码。

/*获取cookie值*/
    @GetMapping("/cookie")
    public Map getCookie(@CookieValue("_seeyon") String _seeyon,
                         @CookieValue("_seeyon") Cookie cookie){
        Map map=new HashMap<String,Object>();
        map.put("seeyon",_seeyon);
        map.put("cookie",cookie.getName()+"===>"+cookie.getValue());

        return map;
    }

简单创建一个html测试一下

<!--获取Cookie-->
<a href="/cookie">获取Cookie</a>

spring boot获取API注解 springboot获取参数的注解_java_04


5.获取请求体:不了解请求体的可以去这里了解了解HTTP请求报文,请求体只有post请求才能拥有,get请求是没有请求体的。请求体的获取相对简单,一个参数就可以获取到。

/*获取请求体*/
    @PostMapping("/body")
    public Map getBody(@RequestBody String content){
        Map map=new HashMap<String,Object>();

        map.put("content",content);

        return map;
    }

前端可以通过Form标签来创建请求体,具体可以去前端发送请求体的几种方式 了解一下,创建一个html测试一下

<!--获取请求体-->
<form action="/body"  method="post">
    账号:<input type="text" name="user">
    密码:<input type="password" name="pwd">
    <input type="submit" value="登入">
</form>

spring boot获取API注解 springboot获取参数的注解_java_05


6.获取request域属性:获取request域属性使用@RequestAttribute注解,该注解可以获取到传过来的request域里面的数据。

/*获取request域属性*/
    @GetMapping("/forWard")
    public String getForword(HttpServletRequest request){
        request.setAttribute("id",123);
        request.setAttribute("name","小猪");
        return "forward:/ra";
    }

    @ResponseBody
    @GetMapping("/ra")
    public Map getRa(@RequestAttribute("id") Integer id,
                     @RequestAttribute("name") String name){
        Map map=new HashMap<String,Object>();

        map.put("id",id);
        map.put("name",name);

        return map;
    }

这里直接用两个接口来测试

spring boot获取API注解 springboot获取参数的注解_spring_06