Category: java
Custom HTTP status in spring boot
Published on 11 Apr 2026
Explanation
Use ResponseEntity to send custom HTTP
status
codes along with response body. This is
the most flexible and commonly used
approach
in Spring Boot APIs.
Code:
@GetMapping("/success")
public ResponseEntity<String>
successExample() {
return ResponseEntity.status(
HttpStatus.OK).body("Request successful");
}
Explanation
Use ResponseEntity helper methods like ok(),
badRequest(),
and notFound() for cleaner and shorter
syntax
while returning standard HTTP status codes.
Code:
@GetMapping("/shortcut")
public ResponseEntity<String>
shortcutExample() {
return ResponseEntity.badRequest().
body("Invalid request data");
}
Explanation
Use @ResponseStatus annotation on
controller methods to
return a fixed HTTP status code
automatically
without ResponseEntity.
Code:
@ResponseStatus(HttpStatus.CREATED)
@PostMapping("/create")
public String createResource() {
return "Resource created successfully";
}
Explanation
Use ResponseStatusException when you want
to throw
an exception with a specific HTTP status
dynamically inside a method.
Code:
@GetMapping("/error")
public String errorExample() {
throw new ResponseStatusException(
HttpStatus.NOT_FOUND, "Resource not found");
}
Explanation
Use @ExceptionHandler inside a
controller to handle
specific exceptions and return
custom status codes.
Code:
@ExceptionHandler(RuntimeException.class)
@ResponseStatus(HttpStatus.
INTERNAL_SERVER_ERROR)
public String handleRuntimeException(
RuntimeException ex) {
return ex.getMessage();
}
Explanation
Use @RestControllerAdvice for global
exception handling across
the application and return structured
responses with
custom status codes.
Code:
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String>
handleGlobalException(Exception ex) {
return ResponseEntity.status(
HttpStatus.INTERNAL_SERVER_ERROR)
.body("
Something went wrong");
}
}