Java 从存储库中删除项目的 http delete 请求

Java http delete request to delete an item from a repository

我正在尝试创建 java 代码以使用项目 ID 从 spring boot 服务器的存储库中删除项目。

我的服务器代码:

@DeleteMapping("/deleteUser/{id}")
public void deleteUser(@PathVariable Long id){
    userRepository.deleteById(id);
}

Java 连接服务器的客户端代码:

URL url = new URL("http://localhost:1234/deleteUser");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();                     
conn.setDoOutput(true);
conn.setRequestMethod("DELETE");   
conn.setRequestProperty("Content-Type", "application/json");

对于 getpost 的其他请求,我会使用输出流写入服务器,但我不确定发送需要删除的 ID 的确切代码到服务器

因为id是一个路径变量,你必须把它作为一个传递。例如:

http://localhost:1234/deleteUser/42

我建议您使用 Spring 的 RestTemplate,它提供 RestTemplate#delete(String url, Map<String, ?> uriVariables) method:

new RestTemplate().delete("http://localhost:1234/deleteUser/{id}", Collections.singletonMap("id", 42));

您可以像这样使用 WebTesClient :

@Autowired
protected WebTestClient webTestClient;

webTestClient.delete()
             .uri("http://localhost:1234/deleteUser/{id}", YOUR_ID)
             .exchange()
             .expectStatus().isOk();

不要忘记添加 webflux 依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
    <scope>test</scope>
</dependency>