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.
Trong bài viết trước, chúng ta đã chuẩn bị tất cả các cấu hình cần thiết để có thể xây dựng API tìm option theo id của question như: một đối tượng document Option chứa thông tin của một option, một OptionRepository để thao tác với MongoDB, một OptionController định nghĩa các API của Core Option Service sẽ bắt đầu với “/option” và thông tin về kết nối đến MongoDB server được cấu hình trong tập tin application.properties. Bây giờ, chúng ta sẽ tiến hành xây dựng API để này các bạn nhé!
Để xây dựng API tìm option theo id của question, đầu tiên mình sẽ định nghĩa một method trong OptionRepository để giúp chúng ta có thể tìm kiếm thông tin về các option dựa vào id của question như sau:
1 |
Flux<Option> findByQuestionId(String questionId); |
Vì chúng ta đang sử dụng Spring Data Mongo Reactive nên các bạn không cần phải implement cho method này gì cả.
Tiếp theo, mình sẽ thêm mới một method để expose một GET request với request parameter “questionId” với questionId là id của question mà các option sẽ thuộc về:
1 2 3 4 |
@GetMapping("") public Flux<Option> findByQuestionId(@RequestParam String questionId) { } |
sau đó sử dụng phương thức findByQuestionId() mà mình đã định nghĩa trong interface OptionRepository để return về như sau:
1 2 3 4 |
@GetMapping("") public Flux<Option> findByQuestionId(@RequestParam String questionId) { return optionRepository.findByQuestionId(questionId); } |
Vậy là xong rồi đó các bạn! 🙂 Test thử xem nhé!
Giả sử trong database mình đang có những option sau:
thì khi request với questionId là 5ad5d9d651bd7a0aefa87fb3, kết quả sẽ như sau:
Đối với API này, vì tất cả mọi thứ do Spring Data Mongo Reactive làm nên chúng ta không cần phải viết Unit Test cho những dòng code mà chúng ta vừa thêm vào các bạn nhé!