如何在 Spring Boot 中针对 METHOD_NOT_ALLOWED 405 错误抛出自定义异常?

问题描述 投票:0回答:1

这是我写的异常方法

@ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
@ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED)
public @ResponseBody ErrorResponse handleRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException ex){
    return new ErrorResponse(HttpStatus.METHOD_NOT_ALLOWED.value(), ex.getMessage());
}

现在我不知道在哪里以及如何抛出这个异常?

@GetMapping
public ResponseEntity<List<SupplierOutputDTO>> getAllSuppliers() throws HttpRequestMethodNotSupportedException {
    return new ResponseEntity<>(service.getAllSuppliers(), HttpStatus.OK);
}

这是我在控制器中的 get 方法,因此在邮递员中,如果我发送 post 请求而不是 get,则会显示 405 错误,那么我该如何处理这个问题。我尝试在方法签名中使用抛出异常,但它不起作用

java spring-boot exception
1个回答
0
投票

未明确要求处理 METHOD NOT ALLOWED 405。该框架会为您处理这个问题。

@GetMapping("/hello")
将 GET 调用映射到端点
/hello
。因此,如果您向“/hello”发送 POST 请求,它会自动为您抛出 405。因此,正确获取 HTTP 动词映射,并让框架为您处理 405。

异常处理程序主要用于处理自定义异常,并发送回修改后的响应和正确的消息,以便客户端更好地了解出了什么问题。通常,应用程序级别的任何异常 -

GET /products/1
,其中
/products/:id
API 确实存在,您需要处理异常并抛出 404 以及一些自定义消息,表明产品 id 1 不可用,或 403,用户不可用允许查看数据。

© www.soinside.com 2019 - 2024. All rights reserved.