有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果SpringBoot中出现NoHandlerFoundException,java无法返回自定义响应

在返回405 errorHttpStatus的无效请求的情况下,我无法创建自定义错误响应。方法_NOT_ALLOWED和{消息:“无效端点”}

我请求带有无效端点的URL,它会给我404错误和默认消息,我想定制这个响应

正确的Url:/api/trains

http://localhost:8080/api/trains

当用户输入其他端点URL时,如

  • /api/trai
  • /空气污染指数/列车
  • api/

对于所有这些无效的端点请求(NoHandlerFoundException),我想抛出一个带有自定义消息的自定义响应

我已经在应用程序中添加了所需的代码。属性文件

spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
server.error.whitelabel.enabled=false

控制器代码

@RestController
@RequestMapping("/api")
public class TrainController {


@Autowired
private TrainRepository trainrepository;

@GetMapping("/trains")
public ResponseEntity<ArrayList<TrainModel>> getAlltrains(){
    
        ArrayList<TrainModel> trainmodel=(ArrayList<TrainModel>) trainrepository.findAll();
        if (trainmodel.isEmpty()) {
        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
        }
        return new ResponseEntity<>(trainmodel, HttpStatus.OK);

}

GlobalExceptionHandlingController

@ControllerAdvice
public class GlobalExceptionHandlingController extends ResponseEntityExceptionHandler{


@ExceptionHandler(NoHandlerFoundException.class)
protected ResponseEntity<Object> handleNoHandlerFoundException(NoHandlerFoundException ex,HttpHeaders headers, HttpStatus status, WebRequest request) {
    HashMap<String,String> responseBody = new HashMap<>();
    responseBody.put("path",request.getContextPath());
    responseBody.put("message","Invalid Endpoint");
    return new ResponseEntity<Object>(responseBody,HttpStatus.METHOD_NOT_ALLOWED);

}

当我试图运行Spring应用程序时,它会给我带来错误
爪哇。lang.IllegalStateException:不明确@ExceptionHandler方法映射


共 (0) 个答案