如果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) 个答案