phucbui2it
AboutContact
HomeBlogXây dựng RESTful API chuẩn "Industry Standard" với Spring Boot

Xây dựng RESTful API chuẩn "Industry Standard" với Spring Boot

2 tháng 2, 2026•
#Java#Spring Boot#API#Best Practices#Tutorial
•890 views

Viết API thì dễ, nhưng viết API để dễ bảo trì, dễ mở rộng và client dễ sử dụng (DX - Developer Experience) thì cần tuân thủ các Best Practices.

1. Luôn sử dụng DTO (Data Transfer Object)

Tuyệt đối không trả về Entity trực tiếp cho Client.

  • Lộ thông tin nhạy cảm (password, salt).
  • Gây lỗi LazyInitializationException hoặc Infinite Recursion (JSON).

Bad:

@GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userRepository.findById(id).get(); }

Good:

@GetMapping("/{id}") public ResponseEntity<UserResponseDTO> getUser(@PathVariable Long id) { User user = userService.getById(id); return ResponseEntity.ok(userMapper.toDto(user)); }

2. Global Exception Handling

Đừng try-catch lắt nhắt trong Controller. Hãy dùng @RestControllerAdvice để bắt lỗi tập trung.

@RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(ResourceNotFoundException.class) public ProblemDetail handleNotFound(ResourceNotFoundException ex) { return ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND, ex.getMessage()); } }

Sử dụng ProblemDetail (chuẩn RFC 7807) có sẵn từ Spring Boot 3 để trả về lỗi chuẩn hóa.

3. Pagination & Sorting

Đừng bao giờ findAll() mà không có phân trang. Sử dụng Pageable trong Controller arguments:

@GetMapping public Page<UserDTO> getUsers(Pageable pageable) { return userService.findAll(pageable); }

Request: GET /users?page=0&size=20&sort=createdAt,desc

4. API Versioning

Luôn luôn versioning API ngay từ ngày đầu tiên.

  • URI Versioning: /api/v1/users (Phổ biến nhất)
  • Header Versioning: X-API-VERSION: 1

Tổng kết

Một API tốt là một API "nhàm chán" - tức là nó hoạt động đúng như mong đợi, chuẩn mực và không gây bất ngờ cho người sử dụng.

P

Phuc Bui

Fullstack Developer & Minimalist.

Topics

Built by PhucBui2. The source code is available on GitHub.

Topics

APIBackendBest PracticesCachingDatabaseJavaPerformanceRedisSpring BootSystem DesignTechTutorial

Trending Now

01

Redis Deep Dive: Không chỉ là Cache, mà là "Vũ khí bí mật" của High-Performance System

2450 views
02

Spring Boot 3.2 & Java 21: Kỷ nguyên mới của Java Backend

1250 views
03

Xây dựng RESTful API chuẩn "Industry Standard" với Spring Boot

890 views