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

在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接口参数的资料请关注vb.net教程C#教程python教程SQL教程access 2010教程xin3721自学网]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值