📌  相关文章
📜  解决了@DeleteMapping 上的 [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported] (1)

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

解决了@DeleteMapping 上的 [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]

当我们使用 Spring Boot 框架开发 RESTful API 时,有时候会碰到这个错误:org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported。这个错误的意思是客户端尝试用 GET 方法去访问一个只支持 DELETE 方法的 API,因为 DELETE 方法不允许带参,所以客户端请求会失败。

产生错误的原因

这个错误的原因一般都是由于程序员在客户端用了错误的请求方法,或者在服务端定义了一些与客户端请求方法不符的方法。

解决方法
1. 确认客户端请求方法是否正确

我们可以使用 Postman 或者 curl 等工具,或者使用 web 浏览器,来验证客户端是否用了正确的请求方法。

2. 确认服务端请求方法是否正确

我们可以查看服务端的代码,确认是否在使用正确的方法,如下所示:

@DeleteMapping("/test")
public ResponseEntity<String> test() {
    return ResponseEntity.ok("test response");
}

在上面的例子中,我们定义了一个 HTTP DELETE 方法,用于处理 "/test" 的请求。

3. 确认客户端请求 URL 是否正确

我们还需要确认客户端请求的 URL 是否与服务端定义的一致,如下所示:

客户端请求代码:

$http({
  method: 'DELETE',
  url: '/test',
}).then(function successCallback(response) {
  console.log(response);
}, function errorCallback(response) {
  console.log(response);
});

服务端代码:

@DeleteMapping("/test")
public ResponseEntity<String> test() {
    return ResponseEntity.ok("test response");
}

如果请求的 URL 不一致,我们需要将客户端的 URL 更改为服务器的 URL。

总结

当我们碰到 org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported 这个错误时,需要先确认客户端是否使用了正确的请求方法,然后再确认服务端是否定义了与客户端请求方法一致的方法,最后确认客户端请求的 URL 是否与服务端定义的一致。如果依然无法解决问题,可以尝试重启应用程序。