banner_thiet_ke_website

Tạo Rest API đơn giản với Spring Boot và MySQL

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 GetPostPutDelete

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!