Giới thiệu
Spring Boot hỗ trợ rất tốt cho việc xây dựng RESTful Web Services cho các ứng dụng doanh nghiệp. Ở bài viết này, chúng ta sẽ thử viết ra những API với một số chức năng đơn giản như lấy, thêm, sửa, xoá... dữ liệu trong Spring Boot.
Code ví dụ
Cấu trúc project
Cài đặt thư viện
Thêm các dependency sau vào pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
Model
User.java
@Entity
@Table(name = "user")
@Getter @Setter
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "age")
private Integer age;
@Column(name = "city")
private String city;
}
Repository
UserRepository.java
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
}
Service
UserService.java
public interface UserService {
Optional<User> findUser(Integer id);
List<User> findAll();
User save(User user);
User update(User user);
void delete(User user);
}
UserServiceImpl.java
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserRepository userRepository;
@Override
public User save(User user) {
return userRepository.save(user);
}
@Override
public Optional<User> findUser(Integer id) {
return userRepository.findById(id);
}
@Override
public List<User> findAll() {
return userRepository.findAll();
}
@Override
public User update(User user) {
return userRepository.save(user);
}
@Override
public void delete(User user) {
userRepository.delete(user);
}
}
Controller
Spring Boot định nghĩa các annotation @GetMapping
, @PostMapping
, @PutMapping
, @DeleteMapping
tương ứng với các phương thức request Get
, Post
, Put
, Delete
UserController.java
@RestController
@RequestMapping("api/v1/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("{id}")
public ResponseEntity<User> findUser(@PathVariable Integer id) {
Optional<User> userOptional = userService.findUser(id);
return userOptional.map(ResponseEntity::ok)
.orElseGet(() -> new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
@GetMapping
public ResponseEntity<List<User>> findAll() {
return ResponseEntity.ok(userService.findAll());
}
@PostMapping
public ResponseEntity<User> save(@RequestBody User user) {
return ResponseEntity.ok(userService.save(user));
}
@PutMapping
public ResponseEntity<User> update(@RequestBody User user) {
return ResponseEntity.ok(userService.update(user));
}
@DeleteMapping
public void delete(@RequestBody User user) {
userService.delete(user);
}
}
Demo
Chạy project với MySQL
và dùng Postman
để gửi request
Database
Chạy thử GET
Chạy thử POST
Chạy thử PUT
Chạy thử DELETE
Lời kết
Hiện nay, hầu như các ứng dụng Web Service đều là RESTful vì sau này dễ bảo trì và nâng cấp. Trên đây là ứng dụng CRUD cơ bản với RESTful của mình trong Spring Boot. Hi vọng bài viết này có ích cho các bạn. Các bạn có thể download project tại GitHub của mình.
Chúc các bạn học tốt!