ResponseEntity represents the complete HTTP response returned by a Spring Boot controller.
It allows you to control:
Package:
org.springframework.http.ResponseEntity
ResponseEntity<T> ├── Body ├── Headers └── Status Code
@RestController
public class UserController {
@GetMapping("/user")
public ResponseEntity<String> getUser() {
return new ResponseEntity<>(
"User Found",
HttpStatus.OK
);
}
}
Cleaner and commonly used in Spring Boot projects:
return ResponseEntity.ok("User Data");
Response:
HTTP/1.1 200 OK Content-Type: text/plain Content-Length: 9 User Data
If you want to add one user-defined header while keeping default headers:
@GetMapping("/user")
public ResponseEntity<String> getUser() {
return ResponseEntity
.ok()
.header("X-User-Type", "Premium")
.body("User Data");
}
Response Example:
HTTP/1.1 200 OK Content-Type: text/plain Content-Length: 9 X-User-Type: Premium User DataDefault headers remain automatically.
HttpHeaders headers = new HttpHeaders();
headers.add("X-User-Type", "Premium");
return new ResponseEntity<>(
"User Data",
headers,
HttpStatus.OK
);
RequestEntity represents a full HTTP request.
It contains:org.springframework.http.RequestEntityStructure:
RequestEntity ├── Method ├── URL ├── Headers └── Body
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer token");
RequestEntity<String> request =
new RequestEntity<>(
"Request Body",
headers,
HttpMethod.POST,
URI.create("http://localhost:8080/users")
);
ResponseEntity<String> response =
restTemplate.exchange(request, String.class);
HTTP status codes indicate the result of a client request.
| Range | Category | Description |
|---|---|---|
| 1xx | Informational | Request received |
| 2xx | Success | Request successful |
| 3xx | Redirection | Resource moved |
| 4xx | Client Error | Problem in request |
| 5xx | Server Error | Server failed |
| Status Code | Meaning | Usage |
|---|---|---|
| 200 | OK | Request successful |
| 201 | Created | Resource created |
| 204 | No Content | Success without body |
| 400 | Bad Request | Invalid input |
| 401 | Unauthorized | Authentication required |
| 403 | Forbidden | Access denied |
| 404 | Not Found | Resource not found |
| 500 | Internal Server Error | Server failure |
Spring Boot provides the HttpStatus enum.
org.springframework.http.HttpStatusExample:
@GetMapping("/users/{id}")
public ResponseEntity<String> getUser(@PathVariable int id) {
if(id != 1)
return ResponseEntity
.status(HttpStatus.NOT_FOUND)
.body("User Not Found");
return ResponseEntity.ok("User Found");
}
@ResponseStatus(HttpStatus.CREATED)
@PostMapping("/users")
public String createUser() {
return "User Created";
}