SpringBoot接收参数的8种方式

SpringBoot接收参数的8种方式


1. 直接把请求参数写在方法的形参中

  • 此场景适用于请求参数较少的情况
  • 任何请求都可以
java">    @RequestMapping("/fun1")
    public Book fun1(String name, Long id){

        log.info("{}  {}",id,name);
        Book book=new Book(id, name);
        return book;

    }

2. 封装一个bean直接来接收

    @RequestMapping("/fun2")
    public Book fun2(Book book){

        log.info("book={}",book);
        return book;

    }

3. 原生的HttpServletRequest接收

  • 同时适用get、post方法
  • 是整个请求,可以获取到所有的数据
  • 可以和其他的注解配合适用
  • HttpServletRequest、HttpServletResponse都是内置对象,可以使用
    @RequestMapping("/fun3")
    public Book fun3(HttpServletRequest request){

        log.info("{}  {}",request.getParameter("id"),request.getParameter("name"));
        return new Book(Long.parseLong(request.getParameter("id")),request.getParameter("name"));

    }
        //  key-value 类型
        Map<String, String[]> map = request.getParameterMap();
        //  路径参数
        String pathInfo = request.getPathInfo();
        //  body内容
        ServletInputStream inputStream = request.getInputStream();

4. @PathVariable获取rest风格路径参数

    @RequestMapping("/fun4/{id}/{name}")
    public Book fun4(@PathVariable long id,@PathVariable String name){
        log.info("{}  {}",id,name);
        Book book=new Book(id, name);
        return book;

    }

5. @RequestParam绑定请求参数到方法形参

    @RequestMapping("/fun6")
    public Book fun6(@RequestParam("name") String name,
                     @RequestParam("id") Long id){

        log.info("{}  {}",id,name);
        Book book=new Book(id, name);
        return book;

}
当请求参数username或者password不存在时会有异常发生,可以通过设置属性required=false解决
@RequestParam(value="username", required=false)

6. @RequestBody绑定请求参数到方法形参

  • 只能Post方法
  • 参数必须Json字符串
  • Body只能有一个
    @RequestMapping("/fun7")
    public Book fun7(@RequestBody Book book){
        log.info("book={}",book);
        return book;

    }

7. @RequestHeader

  • RequestHeader主要用来获取请求当中的请求头
// 方式1:获取单个header属性
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader("user-id") String userId){
 
}
//方式2:获取所有header属性
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader Map<String, String> headers){
 
}
//方式3 获取header对象
@RequestMapping("/geteHeader")
public void getHeader(@RequestHeader HttpHeaders headers){
 
}

8. @CookieValue

  • 使用@CookieValue注解来获得指定的 Cookie 的值。
@GetMapping("park/getCookie")
    public String getCookieValue(@CookieValue("jid") String jId) {
        System.out.println(jId);
        return "su***ess";
    }
转载请说明出处内容投诉
CSS教程_站长资源网 » SpringBoot接收参数的8种方式

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买