Risposta 404 custom in Spring Boot
In Spring Boot possiamo customizzare praticamente tutto, solo che a volte il procedimento è un pò tortuoso.
In questo articolo vediamo come personalizzare l'errore 404.
Cominciamo aggiungendo questa riga al file application.properties:
spring.mvc.throw-exception-if-no-handler-found=true
Poi dobbiamo attivare l'MVC; io ho aggiunto l'annotazione nel main:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@SpringBootApplication
@EnableWebMvc
public class CiesApiVpsApplication {
public static void main(String[] args) {
SpringApplication.run(CiesApiVpsApplication.class, args);
}
}
A questo punto creiamo una classe per la risposta custom; considerate che io uso Lombok:
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
public class MyErrorResponse {
private int code;
private String message;
}
Infine creiamo una classe per customizzare la risposta:
import com.cies.api.utils.MyErrorResponse;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.NoHandlerFoundException;
@ControllerAdvice
public class ErrorHandlerController {
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public ResponseEntity<MyErrorResponse> handleNoHandlerFoundException(NoHandlerFoundException ex, HttpServletRequest httpServletRequest) {
MyErrorResponse apiMyErrorResponse = new MyErrorResponse(404, "Not found");
return ResponseEntity.status(HttpStatus.NOT_FOUND).contentType(MediaType.APPLICATION_JSON).body(apiMyErrorResponse);
}
}
Enjoy!
java spring boot nohandlerfoundexception
Commentami!