Building Production-Grade REST APIs
Spring Boot ke SAATH REST API banaने ke MULTIPLE BEST PRACTICES hain — CONSISTENT naming (plural nouns, /users NAHI /getUsers), PROPER STATUS CODES (200/201/204/400/404), PAGINATION (bade datasets ke liye, /users?page=0&size=20), aur VERSIONING (/api/v1/users) — TAAKI FUTURE changes EXISTING clients ko BREAK NA karein.
OpenAPI/Swagger documentation (springdoc-openapi library se) AUTOMATICALLY GENERATE ki ja sakti hai — CONTROLLER annotations SE HI, INTERACTIVE API documentation BAN jaati hai, MANUALLY documentation MAINTAIN karne ki zaroorat NAHI.
@RestController
@RequestMapping("/api/v1/users")
public class UserController {
@GetMapping
public Page<User> getUsers(
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "20") int size) {
return userService.findAll(PageRequest.of(page, size));
}
}
<!-- OpenAPI/Swagger — automatic documentation: -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
</dependency>
<!-- /swagger-ui.html par INTERACTIVE docs AUTOMATICALLY available ho jaati hain -->- Consistent naming, proper status codes, PAGINATION, VERSIONING = best practices
- springdoc-openapi = automatic, INTERACTIVE API documentation
- Pagination LARGE datasets ke liye ESSENTIAL — Pageable interface se TRIVIAL
Spring Boot DEFAULT mein JSON RETURN karta hai, LEKIN CLIENT ke Accept HEADER ke basis par, DIFFERENT FORMATS (XML) bhi RETURN kiye ja sakte hain — jackson-dataformat-xml dependency add karके, SAME controller code, MULTIPLE formats SUPPORT kar sakta hai.
REST APIs ko VERSION karने ke MULTIPLE APPROACHES hain — URL PATH (/api/v1/users, /api/v2/users), HEADER-based (Accept: application/vnd.company.v2+json), ya QUERY PARAMETER (?version=2). URL-based SIMPLEST aur MOST COMMON approach hai.
@RestController
@RequestMapping("/api/v1/users")
public class UserControllerV1 { }
@RestController
@RequestMapping("/api/v2/users")
public class UserControllerV2 { }