SpringBoot Get方式请求传参用法介绍

本文将从以下多个方面对SpringBoot Get方式请求传参做详细的阐述,包括URL传参、路径传参、请求头传参、请求体传参等,帮助读者更加深入地了解Get请求方式下传参的相关知识。

一、URL传参

在Get请求方式中,URL传参是最为常见的一种方式,可以通过URL中添加参数的方式进行传递。例如:

http://localhost:8080/user?id=123&name=张三

在Controller中通过@RequestParam注解接收参数:

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestParam("id") Integer id, @RequestParam("name") String name) {
        return "id: " + id + ", name: " + name;
    }
}

通过@RequestParam注解可以指定参数的名称,如果未指定,则默认使用参数名作为名称,例如上面的name参数。

如果参数为非必选参数,可以使用required属性将其设置为非必选参数:

@GetMapping("/user")
public String getUser(@RequestParam(value = "id", required = false) Integer id, 
                       @RequestParam(value = "name", required = false) String name) {
    return "id: " + id + ", name: " + name;
}

此时如果请求中不带有id或者name参数,也不会抛出异常。

二、路径传参

除了URL传参外,Get请求方式还可以通过路径进行参数传递,通常用于RESTful API中:

http://localhost:8080/user/123

在Controller中通过@PathVariable注解接收参数:

@RestController
public class UserController {
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable("id") Integer id) {
        return "id: " + id;
    }
}

通过@PathVariable注解可以将路径中的参数获取到,并作为方法的参数使用。

如果路径中有多个参数需要传递,可以按照以下方式进行定义:

@RestController
public class UserController {
    @GetMapping("/user/{id}/name/{name}")
    public String getUserByIdAndName(@PathVariable("id") Integer id, @PathVariable("name") String name) {
        return "id: " + id + ", name: " + name;
    }
}

三、请求头传参

在Get请求方式中,除了URL和路径传参外,还可以通过请求头进行参数传递,可以增加信息的安全性和隐私性。例如:

http://localhost:8080/user
X-Token: abc
X-User-Id: 12345

在Controller中通过@RequestHeader注解接收参数:

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestHeader("X-Token") String token, @RequestHeader("X-User-Id") Integer userId) {
        return "token: " + token + ", userId: " + userId;
    }
}

通过@RequestHeader注解可以获取请求头中指定的参数,并作为方法的参数使用。

四、请求体传参

除了以上三种传参方式,还可以在Get请求方式中使用请求体进行参数传递。但是需要特别注意,Get请求方式中,并不是所有的浏览器都支持请求体传参。这种方式一般用于前端使用ajax等技术进行请求,在后端Controller中通过@RequestBody注解接收参数。

$.ajax({
    url: "/user",
    type: "GET",
    contentType: "application/json",
    data: JSON.Stringify({id: 123, name: "张三"}),
    success: function(result){
        console.log(result);
    }
});

在Controller中通过@RequestBody注解接收参数:

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestBody User user) {
        return "id: " + user.getId() + ", name: " + user.getName();
    }
}

需要注意的是,由于Get请求并不是通过请求体进行传参的标准方式,因此需要使用contentType指定请求类型为application/json,同时在请求数据中需要将参数序列化为JSON字符串。

代码示例:

1、URL传参

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestParam("id") Integer id, @RequestParam("name") String name) {
        return "id: " + id + ", name: " + name;
    }
}

2、路径传参

@RestController
public class UserController {
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable("id") Integer id) {
        return "id: " + id;
    }
}

3、请求头传参

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestHeader("X-Token") String token, @RequestHeader("X-User-Id") Integer userId) {
        return "token: " + token + ", userId: " + userId;
    }
}

4、请求体传参

前端发送请求:

$.ajax({
    url: "/user",
    type: "GET",
    contentType: "application/json",
    data: JSON.Stringify({id: 123, name: "张三"}),
    success: function(result){
        console.log(result);
    }
});

在Controller中使用@RequestBody注解接收参数:

@RestController
public class UserController {
    @GetMapping("/user")
    public String getUser(@RequestBody User user) {
        return "id: " + user.getId() + ", name: " + user.getName();
    }
}

以上为四种Get请求方式下的参数传递方式,开发者可以根据具体业务场景进行选择,更加深入的了解和使用SpringBoot框架,可以让我们的开发效率更加高效。

原创文章,作者:CORLT,如若转载,请注明出处:https://www.506064.com/n/374162.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CORLTCORLT
上一篇 2025-04-27 15:27
下一篇 2025-04-27 15:27

相关推荐

  • 从ga角度解读springboot

    springboot作为目前广受欢迎的Java开发框架,其中的ga机制在整个开发过程中起着至关重要的作用。 一、ga是什么 ga即Group Artifacts的缩写,它是Mave…

    编程 2025-04-29
  • Python缓存图片的处理方式

    本文将从多个方面详细阐述Python缓存图片的处理方式,包括缓存原理、缓存框架、缓存策略、缓存更新和缓存清除等方面。 一、缓存原理 缓存是一种提高应用程序性能的技术,在网络应用中流…

    编程 2025-04-29
  • Python在线编辑器的优势与实现方式

    Python在线编辑器是Python语言爱好者的重要工具之一,它可以让用户方便快捷的在线编码、调试和分享代码,无需在本地安装Python环境。本文将从多个方面对Python在线编辑…

    编程 2025-04-28
  • Elasticsearch API使用用法介绍-get /_cat/allocation

    Elasticsearch是一个分布式的开源搜索和分析引擎,支持全文检索和数据分析,并且可伸缩到上百个节点,处理PB级结构化或非结构化数据。get /_cat/allocation…

    编程 2025-04-28
  • Java表单提交方式

    Java表单提交有两种方式,分别是get和post。下面我们将从以下几个方面详细阐述这两种方式。 一、get方式 1、什么是get方式 在get方式下,表单的数据会以查询字符串的形…

    编程 2025-04-27
  • 用Pythonic的方式编写高效代码

    Pythonic是一种编程哲学,它强调Python编程风格的简单、清晰、优雅和明确。Python应该描述为一种语言而不是一种编程语言。Pythonic的编程方式不仅可以使我们在编码…

    编程 2025-04-27
  • Java多版本支持实现方式

    本文将从以下几个方面阐述如何实现Java多版本支持,并给出可行的代码示例。 一、多版本Java环境概述 Java是一门跨平台的编程语言,但是在不同的应用场景下,可能需要使用不同版本…

    编程 2025-04-27
  • Python获取APP数据的多种方式

    如果您需要对APP进行分析、数据采集、监控或者自动化测试,那么您一定需要获取APP的数据。本文将会介绍一些Python获取APP数据的方式。 一、使用ADB工具获取APP数据 AD…

    编程 2025-04-27
  • Python中用空格隔开的使用方式

    Python是一种高级编程语言,非常流行,因为它有很多有用的功能。其中一个有用的功能是用空格隔开代码。在本文中,我们将从多个方面讨论Python中如何使用空格隔开代码。 一、Pyt…

    编程 2025-04-27
  • HTTP请求方式的选择:POST还是GET?

    对于使用xxl-job进行任务调度的开发者,通常需要发送HTTP请求来执行一些任务。但是在发送请求时,我们总是会遇到一个问题:是使用POST还是GET?下面将从多个方面对这个问题进…

    编程 2025-04-27

发表回复

登录后才能评论