Modern applications expose APIs for frontend clients, mobile apps, and third-party integrations. Building RESTful APIs requires mapping HTTP methods to operations, serializing/deserializing JSON, handling status codes, and managing request/response formats. Without good tooling, this involves significant boilerplate.
Spring Boot makes REST API development effortless by combining @RestController for request handling, auto-configured Jackson for JSON serialization, embedded Tomcat for serving, and Actuator for monitoring. A single @SpringBootApplication class and a few controller methods produce a production-ready REST API.
- @RestController:
@Controller+@ResponseBody— every method returns data (JSON/XML), not view names - Request mapping:
@GetMapping,@PostMapping,@PutMapping,@DeleteMappingmap HTTP verbs and URLs - Request binding:
@PathVariable,@RequestParam,@RequestBodybind request data to method parameters - Response serialization: Jackson (auto-configured) serializes Java objects to JSON;
@JsonIgnore,@JsonPropertycontrol output - Status codes:
@ResponseStatus(HttpStatus.CREATED)orResponseEntityfor full control - Exception handling:
@RestControllerAdviceprovides consistent JSON error responses across all endpoints - Documentation: Spring Boot integrates with Swagger/OpenAPI for auto-generated API docs
- RESTful mapping: One annotation per HTTP verb —
@GetMapping,@PostMapping,@PutMapping,@DeleteMapping,@PatchMapping - Content negotiation: Jackson serializes to JSON by default; XML if Jackson XML extension is on classpath
- ResponseEntity: Full control over status, headers, and body —
ResponseEntity.created(location).body(savedUser) - Request validation:
@Valid+ BindingResult for request body validation - HATEOAS: Spring HATEOAS adds link support for hypermedia-driven APIs
- Testing:
MockMvcandWebTestClientfor comprehensive REST API testing
- Built from: Spring Boot — Boot auto-configures the web stack for REST APIs
- Built from: Spring Controller — @RestController is a specialized @Controller
- Related: JAX-RPC — JAX-RPC is XML-based SOAP; Spring Boot REST is JSON-based, lighter
- Builds into: Java Microservices — REST APIs are the communication backbone of microservices
- Related: HTTP Protocol — REST APIs use HTTP semantics (methods, status codes, headers)
- Circular references: Bidirectional JPA relationships cause infinite JSON serialization — use
@JsonIgnoreor@JsonManagedReference/@JsonBackReference - Global prefix: All APIs under
/api/v1/— setserver.servlet.context-pathor useRequestMappingat class level - Content-type mismatch: Client sends wrong Content-Type → 415 Unsupported Media Type
- Versioning: URL path versioning (
/v1/users) vs header versioning (Accept: application/vnd.company.v1+json) - CORS: Browsers block cross-origin requests;
@CrossOriginorWebMvcConfigurer.addCorsMappings()to allow