📅  最后修改于: 2023-12-03 14:52:34.546000             🧑  作者: Mango
在 Spring Boot 中,可以使用 RestTemplate
或者 WebClient
类来发出 PUT 请求。这两个类都提供了丰富的方法来发送 HTTP 请求和处理响应。
首先,确保在 pom.xml 文件中添加了以下依赖:
<dependencies>
<!-- 其他依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
</dependencies>
然后,可以通过创建一个 RestTemplate
的实例来发送 PUT 请求:
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
RestTemplate restTemplate = new RestTemplate();
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// 设置请求体
String requestBody = "{\"key\":\"value\"}";
// 创建请求实体
HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
// 发送请求
String url = "http://example.com/api/resource";
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.PUT, entity, String.class);
// 处理响应
String responseBody = response.getBody();
上述代码中,我们首先创建了一个 RestTemplate
实例。然后,设置请求头(Content-Type
)和请求体,构建了一个 HttpEntity
对象。接下来,使用 RestTemplate
的 exchange
方法发送了 PUT 请求,并获得了一个 ResponseEntity
对象作为响应。
WebClient
是 Spring 5 引入的新类,提供了一种函数式、非阻塞的方式来发送 HTTP 请求,并且可以很容易地与反应式编程结合使用。
首先,确保在 pom.xml 文件中添加了以下依赖:
<dependencies>
<!-- 其他依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
</dependencies>
然后,可以通过创建一个 WebClient
的实例来发送 PUT 请求:
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.WebClient;
WebClient client = WebClient.create();
// 发送请求
String url = "http://example.com/api/resource";
String responseBody = client.put()
.uri(url)
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue("{\"key\":\"value\"}"))
.retrieve()
.bodyToMono(String.class)
.block();
上述代码中,我们首先创建了一个 WebClient
实例。然后,使用 WebClient
的 put
方法设置请求方法,并链式调用其他方法设置 URI、请求头、请求体等信息。最后,通过 retrieve
方法执行请求,并通过 bodyToMono
方法获取响应体,使用 block
方法阻塞等待结果。
以上是在 Spring Boot 中发出 PUT 请求的两种方式:使用 RestTemplate
和 WebClient
。可以根据需求选择适合的方式来发送 PUT 请求。