Spring Boot Cơ bản: Xây dựng REST API

Spring Boot là framework Java phổ biến nhất để xây dựng ứng dụng web và microservices. Hãy cùng tạo REST API đầu tiên!

1. Spring Boot là gì?

Spring Boot giúp đơn giản hóa việc phát triển ứng dụng Spring bằng cách:

2. Tạo Project

Sử dụng Spring Initializr (start.spring.io) để tạo project với:

3. Tạo Model (Entity)

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    private String email;
    
    // Constructors, Getters, Setters
    public User() {}
    
    public User(String name, String email) {
        this.name = name;
        this.email = email;
    }
    
    // Getters và Setters...
}

4. Tạo Repository

public interface UserRepository extends JpaRepository<User, Long> {
    // Spring Data JPA tự động implement
    // các method cơ bản: save, findById, findAll, delete...
    
    // Custom queries
    List<User> findByName(String name);
    Optional<User> findByEmail(String email);
}

5. Tạo REST Controller

@RestController
@RequestMapping("/api/users")
public class UserController {
    
    @Autowired
    private UserRepository userRepository;
    
    // GET tất cả users
    @GetMapping
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
    
    // GET user theo ID
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userRepository.findById(id)
            .orElseThrow(() -> new ResourceNotFoundException("User not found"));
    }
    
    // POST tạo user mới
    @PostMapping
    public User createUser(@RequestBody User user) {
        return userRepository.save(user);
    }
    
    // PUT cập nhật user
    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User userDetails) {
        User user = userRepository.findById(id)
            .orElseThrow(() -> new ResourceNotFoundException("User not found"));
        
        user.setName(userDetails.getName());
        user.setEmail(userDetails.getEmail());
        
        return userRepository.save(user);
    }
    
    // DELETE xóa user
    @DeleteMapping("/{id}")
    public ResponseEntity<?> deleteUser(@PathVariable Long id) {
        User user = userRepository.findById(id)
            .orElseThrow(() -> new ResourceNotFoundException("User not found"));
        
        userRepository.delete(user);
        return ResponseEntity.ok().build();
    }
}

6. Chạy ứng dụng

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

Sau khi chạy, API sẽ có sẵn tại: http://localhost:8080/api/users

7. Test API với cURL

# Tạo user mới
curl -X POST http://localhost:8080/api/users \\
  -H "Content-Type: application/json" \\
  -d '{"name":"Huy","email":"huy@example.com"}'

# Lấy tất cả users
curl http://localhost:8080/api/users

# Lấy user theo ID
curl http://localhost:8080/api/users/1

Kết luận

Bạn đã tạo được REST API đầu tiên với Spring Boot! Framework này rất mạnh mẽ với nhiều tính năng khác như Security, Validation, Exception Handling... Hãy tiếp tục khám phá!