Questions Management – Core Option Service – Xây dựng API thêm mới option

Xem toàn bộ series bài viết hướng dẫn xây dựng ứng dụng Questions Management tại đây.

Trước khi đi vào xây dựng API đầu tiên cho Core Option Service, chúng ta cần chuẩn bị một số thứ như sau:

Đầu tiên là chúng ta cần tạo mới một interface OptionRepository extends từ interface ReactiveMongoRepository để thao tác với MongoDB database.

Nội dung của interface OptionRepository sẽ như sau:

với đối tượng document Option:

Các bạn có thể xem thêm bài viết Reactive REST APIs với Spring Data MongoDB Reactive và Spring WebFlux để tham khảo thêm nhé!

Tiếp theo mình sẽ cấu hình phần kết nối tới MongoDB server.

Hiện tại mình đang sử dụng MongoDB server không phải là authentication mode nên mình chỉ cần khai báo như sau trong tập tin application.properties:

Mình sẽ chạy service này sử dụng port 8083 nên mình sẽ thêm property server.port trong tập tin application.properties như sau:

OK, mọi thứ chuẩn bị đã xong, bây giờ chúng ta sẽ đi vào phần chính của bài viết này các bạn nhé!

Mình sẽ tạo mới một controller tên là OptionController với nội dung như sau:

Với khai báo trên, mình đã expose các API cho Core Option Service với request URL bắt đầu là “/option”.

Để thao tác với MongoDB server, chúng ta cần inject OptionRepository vào class OptionController như sau:

Để xây dựng API thêm mới option, mình sẽ thêm mới một method để expose một POST request “/add” với data trong phần body là đối tượng document Option:

Bởi vì Spring MongoDB Reactive đã hỗ trợ cho chúng ta phương thức save() để lưu data vào MongoDB nên mình chỉ cần gọi để sử dụng phương thức này mà thôi:

Đến đây thì chúng ta đã hoàn thành việc xây dựng API thêm mới option cho Core Option Service, hãy test thử xem sao nhé các bạn.

Questions Management – Core Option Service – Xây dựng API thêm mới option



Phần cuối cùng mà chúng ta cần làm là thêm mới Unit Test cho code mà chúng ta vừa thêm vào.

Mình sẽ tạo mới một class tên là OptionControllerTest nằm trong package src/test/java để test cho class OptionController.

Mock class OptionRepository:

Inject đối tượng mock của OptionRepository vào class OptionController:

Để sử dụng các đối tượng mock, chúng ta phải khởi tạo chúng trước mỗi lần test một phương thức nên mình sẽ thêm một phương thức với annotation @Before của JUnit như sau:

Code để test phương thức createOption() như sau:

Chạy “Maven test” trong STS hoặc “mvn test” với Apache Maven, các bạn sẽ không lỗi nào cả.

Add Comment