Giới Thiệu
Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo một RESTful API đơn giản bằng Java Spring Boot sử dụng MySQL làm cơ sở dữ liệu. Hướng dẫn này sẽ từng bước dẫn dắt bạn từ việc thiết lập môi trường phát triển đến việc triển khai API hoàn chỉnh.
Bước 1: Chuẩn Bị Môi Trường
Để bắt đầu, bạn cần chuẩn bị các công cụ sau:
- Java Development Kit (JDK): Cài đặt phiên bản mới nhất của JDK để phát triển ứng dụng Java.
- IDE Java: Sử dụng IntelliJ IDEA hoặc một IDE khác mà bạn thích để hỗ trợ phát triển.
- MySQL: Cài đặt MySQL để sử dụng làm cơ sở dữ liệu.
Bước 2: Tạo Dự Án Spring Boot Mới
Bạn có thể dễ dàng tạo một dự án Spring Boot mới bằng cách truy cập Spring Initializr hoặc sử dụng trực tiếp IntelliJ IDEA để khởi tạo dự án với các cấu hình cơ sở cần thiết.
Bước 3: Tạo Model User
Tiếp theo, bạn sẽ tạo một model cho người dùng. Đây là cấu trúc mà bạn sẽ lưu trữ trong cơ sở dữ liệu.
java
import javax.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
// Các phương thức khởi tạo, getter, setter
}
Bước 4: Tạo UserRepository
Chúng ta sẽ sử dụng một repository để tương tác vớiฐาน dữ liệu.
java
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
Bước 5: Tạo Controller
Controller sẽ xử lý các yêu cầu HTTP và gọi các phương thức từ repository để lấy dữ liệu.
java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping
public List<User> getAllUsers() {
return userRepository.findAll();
}
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable(value = "id") Long userId) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new ResourceNotFoundException("User not found with id: " + userId));
return ResponseEntity.ok().body(user);
}
@PostMapping
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
@PutMapping("/{id}")
public ResponseEntity<User> updateUser(@PathVariable(value = "id") Long userId,
@RequestBody User userDetails) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new ResourceNotFoundException("User not found with id: " + userId));
user.setUsername(userDetails.getUsername());
user.setPassword(userDetails.getPassword());
final User updatedUser = userRepository.save(user);
return ResponseEntity.ok(updatedUser);
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable(value = "id") Long userId) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new ResourceNotFoundException("User not found with id: " + userId));
userRepository.delete(user);
return ResponseEntity.ok().build();
}
}
Bước 6: Tạo Exception Handler
Chúng ta cần xử lý các trường hợp ngoại lệ khi người dùng không được tìm thấy.
java
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
public ResourceNotFoundException(String message) {
super(message);
}
}
Bước 7: Cấu Hình Cơ Sở Dữ Liệu MySQL
Bạn cần thêm cấu hình kết nối MySQL vào file application.properties
.
spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
Bước 8: Chạy Ứng Dụng
Cuối cùng, hãy chạy ứng dụng Spring Boot của bạn. Bạn sẽ có một RESTful API đơn giản để quản lý người dùng thông qua MySQL.
Kết Luận
Hướng dẫn này chỉ là bước khởi đầu. Bạn có thể mở rộng thêm các tính năng như xác thực người dùng, phân quyền truy cập, sử dụng JWT để bảo mật, và nhiều tính năng nâng cao khác. Chúc bạn thành công trên hành trình phát triển ứng dụng của mình!
source: viblo