如何在Spring Boot 3.2新RestClient中传递请求参数?
Spring RestClient 传递路径变量与请求参数示例
下面是使用RestClient同时传递1个路径变量和5个请求参数的完整示例,适配GET请求场景:
import org.springframework.web.client.RestClient; import java.util.Map; public class RestClientExample { public static void main(String[] args) { // 构建RestClient实例 RestClient restClient = RestClient.create(); // 定义路径变量与请求参数 Long userId = 123L; // 路径变量值 Map<String, String> queryParams = Map.of( "param1", "value1", "param2", "value2", "param3", "value3", "param4", "value4", "param5", "value5" ); // 发起请求并处理响应 String response = restClient.get() .uri("https://api.example.com/users/{userId}", userId) // 设置路径变量 .queryParams(queryParams) // 批量添加请求参数 .retrieve() .body(String.class); System.out.println("响应结果: " + response); } }
关键点说明:
- 路径变量:在
uri()方法的第一个参数中用{变量名}占位,第二个参数传入对应值;多路径变量可按顺序传值,或用Map批量传递(如uri("url/{var1}/{var2}", Map.of("var1", val1, "var2", val2)))。 - 请求参数:
- 批量添加:用
queryParams()传入MultiValueMap或普通Map,适合参数较多的场景。 - 逐个添加:支持链式调用
queryParam("param1", "value1").queryParam("param2", "value2")单独设置每个参数。
- 批量添加:用
- 若为POST请求,需将业务参数放入请求体(通过
body()方法传递),URL路径变量和请求参数的设置逻辑与GET一致。
迁移适配写法
从WebClient迁移时,RestClient支持和WebClient一致的URI构建lambda写法,可直接复用原有逻辑框架:
restClient.get() .uri(uriBuilder -> uriBuilder .path("/users/{userId}") .queryParam("param1", "value1") .queryParam("param2", "value2") .queryParam("param3", "value3") .queryParam("param4", "value4") .queryParam("param5", "value5") .build(userId)) .retrieve() .body(String.class);
内容的提问来源于stack exchange,提问作者A. Student
相关产品推荐
相关产品推荐

