Questions Management – Composite Question Service – Xây dựng API cập nhập question

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 cập nhập question trong Composite Question Service như: một đối tượng chứa tất cả các thông tin của một câu hỏi CompositeQuestion bao gồm Question, Category và Option; một interface CoreCategoryService với implementation là CoreCategoryServiceImpl đảm nhận việc thao tác với Core Category Service; một interface CoreQuestionService với implementation là CoreQuestionServiceImpl đảm nhận việc thao tác với Core Question Service; một interface CoreOptionService với implementation là CoreOptionServiceImpl đảm nhận việc thao tác với Core Option Service; một interface CompositeQuestionService đảm nhận việc thao tác với các Core Service; một CompositeQuestionController định nghĩa các API của Composite Question Service sẽ bắt đầu với “/question” và thông tin của các Core Service đượ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 cập nhập question, đầu tiên mình sẽ định nghĩa mới một method trong CoreQuestionService đảm nhận việc gọi API của Core Question Service để cập nhập question như sau:

Implementation của method này trong class CoreQuestionServiceImpl sẽ như sau:

Tiếp theo mình cũng sẽ định nghĩa mới một method trong CompositeQuestionService đảm nhận việc gọi method updateQuestion() của class CoreQuestionService và combine các thông tin từ Core Category Service và Core Option Service để trả về cho người dùng sau khi cập nhập question.
Nội dung của method này như sau:

Implementation của method này:

Như các bạn thấy, ở đây mình sẽ kiểm tra xem Category Id mà question này đang thuộc về có tồn tại trong hệ thống hay không bằng cách gọi tới Core Category Service để tìm kiếm Category theo id. Trong trường hợp Category này tồn tại mình mới gọi method updateQuestion() của class CoreQuestionService để cập nhập question.

Sau khi cập nhập question xong, chúng ta cần gọi qua Core Option Service để lấy tất cả các option thuộc về câu hỏi này để build kết quả trả về.

Điều cuối cùng chúng ta cần làm đó là thêm mới một method vào class CompositeQuestionController để expose một PUT request “/{id}” với data trong phần body là nội dung của question cần update.

Việc chúng ta chỉ là gọi tới method updateQuestion() của class CompositeQuestionService mà thôi:

Ở đây, trong trường hợp không tìm thấy Category Id mà question này thuộc về, một lỗi HTTP 404 Not Found sẽ được trả về cho người dùng như các bạn thấy trong đoạn code trên.

OK, đến đây là chúng ta đã hoàn thành việc xây dựng API cập nhập question cho Composite Question Service rồi đó các bạn. Test thử xem sao nhé.

Giả sử hiện tại mình đang có những question như sau:

Questions Management – Composite Question Service – Xây dựng API cập nhập question

Nếu bây giờ mình cập nhập question đầu tiên trong danh sách trên, có id là 5ad5d9d651bd7a0aefa87fb3 thì kết quả sẽ như sau:

Questions Management – Composite Question Service – Xây dựng API cập nhập question

Add Comment