SpringBoot中API接口参数获取方式小结

 更新时间:2024年06月26日 09:15:35   作者:是猛男啊  
在Spring Boot中,API接口参数可以通过多种方式获取,具体取决于你定义的API接口参数类型(如路径参数、查询参数、请求体参数、请求头等),本文给大家就介绍了一些常见的参数获取方式,需要的朋友可以参考下

引言

在Spring Boot中,API接口参数可以通过多种方式获取,具体取决于你定义的API接口参数类型(如路径参数、查询参数、请求体参数、请求头等)。以下是一些常见的参数获取方式以及对应的Java样例代码:

1.路径参数(Path Variable)

使用@PathVariable注解从URL路径中获取参数。

    @RestController
    @RequestMapping("/users")
    public class UserController {
 
        @GetMapping("/{id}")
        public ResponseEntity<String> getUserById(@PathVariable Long id) {
            // 处理逻辑
            return ResponseEntity.ok("User with ID: " + id);
        }
    }

2.查询参数(Query Parameter)

使用@RequestParam注解从URL查询字符串中获取参数。

    @RestController
    @RequestMapping("/users")
    public class UserController {
 
        @GetMapping("/search")
        public ResponseEntity<String> searchUsers(@RequestParam String name) {
            // 处理逻辑
            return ResponseEntity.ok("Searching for user with name: " + name);
        }
 
        // 也可以设置默认值
        @GetMapping("/searchWithDefault")
        public ResponseEntity<String> searchUsersWithDefault(@RequestParam(defaultValue = "John") String name) {
            // 处理逻辑
            return ResponseEntity.ok("Searching for user with name: " + name);
        }
    }

3.请求体参数(Request Body)

使用@RequestBody注解从HTTP请求体中获取参数,通常用于POST或PUT请求。

    @RestController
    @RequestMapping("/users")
    public class UserController {
 
        @PostMapping("/")
        public ResponseEntity<String> createUser(@RequestBody User user) {
            // 处理逻辑
            return ResponseEntity.ok("User created with name: " + user.getName());
        }
 
        // 假设User类如下
        static class User {
            private String name;
            // getters and setters
        }
    }

4.请求头参数(Request Header)

通常不直接使用注解来获取请求头参数,但可以通过HttpServletRequest对象或@RequestHeader注解来获取。

使用@RequestHeader注解:

    @RestController
    @RequestMapping("/users")
    public class UserController {
 
        @GetMapping("/")
        public ResponseEntity<String> getUsers(@RequestHeader("Authorization") String authToken) {
            // 处理逻辑
            return ResponseEntity.ok("Authorization token: " + authToken);
        }
    }

使用HttpServletRequest对象:

    @RestController
    @RequestMapping("/users")
    public class UserController {
 
        @GetMapping("/")
        public ResponseEntity<String> getUsers(HttpServletRequest request) {
            String authToken = request.getHeader("Authorization");
            // 处理逻辑
            return ResponseEntity.ok("Authorization token from HttpServletRequest: " + authToken);
        }
    }

5.@CookieValue

当我们需要与客户端保持有状态的交互时,就需要用到Cookie。此时,服务端读取Cookie数据的时候,就可以像下面这样用@CookieValue来读取Cookie中的SessionId数据。

@GetMapping("/user")
@ResponseBody()
public List<User> getUserList(@CookieValue(name = "SessionId") String sessionId) {
     return userRepo.findAll();
}

6.@MatrixVariable

这个我们用的并不是很多,但一些国外系统有提供这类API参数,这种API的参数通过;分割。

比如:这个请求/books/reviews;isbn=1234;topN=5; 就可以如下面这样,使用@MatrixVariable来加载URL中用;分割的参数。

@GetMapping("/books/reviews")
@ResponseBody()
public List<BookReview> getBookReviews( 
  @MatrixVariable String isbn,  @MatrixVariable Integer topN) {
  return bookReviewsLogic.getTopNReviewsByIsbn(isbn, topN);
}

7.表单数据(Form Data)

对于POST请求中的表单数据,通常可以使用@ModelAttribute或@RequestParam来获取。但如果表单数据作为请求体发送(Content-Type: application/x-www-form-urlencoded),则可以直接使用@RequestParam。如果表单数据是JSON格式,则应使用@RequestBody。

8.Servlet API的其他部分

你还可以使用HttpServletResponse、HttpSession等Servlet API的其他部分来处理请求和响应。但在Spring Boot中,通常推荐使用Spring MVC提供的高级抽象来简化开发。

注:为了正确解析请求体中的JSON数据,需要在Spring Boot项目中添加适当的JSON库(如Jackson),并且确保请求的Content-Type设置为application/json。

以上就是SpringBoot中API接口参数获取方式小结的详细内容,更多关于SpringBoot API接口参数的资料请关注脚本之家其它相关文章!

相关文章

  • JavaCV实现图片中人脸检测的示例代码

    JavaCV实现图片中人脸检测的示例代码

    这篇文章主要介绍了如何利用JavaCV实现图片中人脸检测的功能,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
    2022-11-11
  • Java输出数组的3种方法

    Java输出数组的3种方法

    这篇文章主要给大家介绍了关于Java输出数组的3种方法,对于初学者来说,数组的输入输出是一个麻烦的问题,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • java并发编程专题(六)----浅析(JUC)Semaphore

    java并发编程专题(六)----浅析(JUC)Semaphore

    这篇文章主要介绍了java JUC)Semaphore的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2020-07-07
  • springboot全局异常处理代码实例

    springboot全局异常处理代码实例

    这篇文章主要介绍了springboot全局异常处理代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Java集合框架入门之泛型和包装类

    Java集合框架入门之泛型和包装类

    Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数
    2021-10-10
  • java如何实现postman中用x-www-form-urlencoded参数的请求

    java如何实现postman中用x-www-form-urlencoded参数的请求

    在Java开发中,模拟Postman发送x-www-form-urlencoded类型的请求是一个常见需求,本文主要介绍了如何在Java中实现这一功能,首先,需要通过导入http-client包来创建HTTP客户端,接着,利用该客户端发送Post请求
    2024-09-09
  • springboot临时文件存储目录配置方式

    springboot临时文件存储目录配置方式

    这篇文章主要介绍了springboot临时文件存储目录配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java利用反射如何查找使用指定注解的类详解

    Java利用反射如何查找使用指定注解的类详解

    这篇文章主要给大家介绍了关于Java利用反射如何查找使用指定注解的类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • Java CompletableFuture 异步超时实现深入研究

    Java CompletableFuture 异步超时实现深入研究

    这篇文章主要为大家介绍了Java CompletableFuture 异步超时实现深入研究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • java正则替换sql中的参数实例代码

    java正则替换sql中的参数实例代码

    这篇文章主要给大家介绍了关于java正则替换sql中参数的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-10-10

最新评论