📜  如何在 Spring Boot 中发出 Put 请求?(1)

📅  最后修改于: 2023-12-03 14:52:34.546000             🧑  作者: Mango

在 Spring Boot 中发出 Put 请求

在 Spring Boot 中,可以使用 RestTemplate 或者 WebClient 类来发出 PUT 请求。这两个类都提供了丰富的方法来发送 HTTP 请求和处理响应。

使用 RestTemplate

首先,确保在 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 对象。接下来,使用 RestTemplateexchange 方法发送了 PUT 请求,并获得了一个 ResponseEntity 对象作为响应。

使用 WebClient

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 实例。然后,使用 WebClientput 方法设置请求方法,并链式调用其他方法设置 URI、请求头、请求体等信息。最后,通过 retrieve 方法执行请求,并通过 bodyToMono 方法获取响应体,使用 block 方法阻塞等待结果。

总结

以上是在 Spring Boot 中发出 PUT 请求的两种方式:使用 RestTemplateWebClient。可以根据需求选择适合的方式来发送 PUT 请求。