@RequestParam、@PathVariable、@RequestBody

@RequestParam@PathVariable@RequestBody是Spring MVC中用于处理不同来源HTTP请求参数的注解,它们各有特点,适用于不同的场景。

  1. @RequestParam
    • 用途:用于处理HTTP请求中的查询参数(GET请求)和表单数据(POST请求,如application/x-www-form-urlencoded格式)。

    • 示例:

      @GetMapping("/search")
      public String search(@RequestParam("keyword") String keyword) {
      // ...
      }

      @PostMapping("/submit-form")
      public String submitForm(@RequestParam("username") String username, @RequestParam("password") String password) {
      // ...
      }

    • 特点:
      • 参数通常来源于URL查询字符串或POST表单数据。
      • 可以通过required属性指定参数是否必需,以及通过defaultValue属性提供默认值。
      • 支持数组和列表类型的参数,例如@RequestParam("keywords") List<String> keywords
  1. @PathVariable
    • 用途:用于从RESTful风格的URL路径中提取动态部分(也称为路径变量)。

    • 示例:

      @GetMapping("/users/{id}")
      public String getUser(@PathVariable("id") Long userId) {
      // ...
      }

    • 特点:
      • 参数来源于URL路径中的占位符,由大括号{}包裹。
      • 通常用于构建RESTful API,通过路径直接表示资源的唯一标识符或筛选条件。
      • 参数名称必须与URL路径模板中的占位符名称一致。
  1. @RequestBody
    • 用途:用于从HTTP请求体中绑定复杂的数据结构,通常处理JSON、XML或其他自定义媒体类型的数据。

    • 示例:

      @PostMapping("/users")
      public String createUser(@RequestBody User user) {
      // ...
      }

    • 特点:
      • 用于处理整个请求体的内容,而不是单一的参数。
      • 需要与Content-Type头搭配使用,例如application/json、application/xml等。
      • Spring MVC会使用MessageConverter(如Jackson或Gson)将请求体内容反序列化为Java对象。

总结来说,@RequestParam用于获取GET查询参数或POST表单数据,@PathVariable用于从URL路径中提取动态值,而@RequestBody则是用于处理整个请求体的内容并将其映射到Java对象中。这三个注解分别解决了不同类型的HTTP请求参数的处理问题。

相关推荐
96778 小时前
理解IOC控制反转和spring容器,@Autowired的参数的作用
java·sql·spring
青槿吖11 小时前
【保姆级教程】Spring事务控制通关指南:XML+注解双版本,避坑指南全奉上
xml·java·开发语言·数据库·sql·spring·mybatis
mygljx12 小时前
spring-ai 下载不了依赖spring-ai-openai-spring-boot-starter
java·人工智能·spring
小涛不学习12 小时前
Java 后端核心框架面试题(Spring / SpringMVC / MyBatis / MyBatis-Plus)
java·spring·mybatis
百锦再12 小时前
飞算 JavaAI:我的编程强力助推引擎
java·spring·ai·编程·idea·code·飞算
a56299161914 小时前
【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
java·spring boot·spring
代码探秘者17 小时前
【大模型应用】4.分块之六大策略
java·数据结构·后端·python·spring
那我掉的头发算什么17 小时前
【博客系统】基于Spring全家桶的博客系统(下)
java·后端·spring·mybatis·开发
独自破碎E17 小时前
【面试真题拆解】Spring中的注解
数据库·spring·面试
不吃香菜学java17 小时前
苍穹外卖-新增菜品需求分析
java·spring boot·spring·tomcat·maven·ssm