Questions Management – Composite Question Service – Xây dựng API thêm mới 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 thêm mới 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 thêm mới 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 để thêm mới 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 addNewQuestion() của class CoreQuestionService và combine các thông tin từ Core Category Service để trả về cho người dùng sau khi thêm mới 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 addNewQuestion() của class CoreQuestionService để thêm mới question.

Đ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 POST request “/add” với data trong phần body là nội dung của question cần thêm mới.

Việc chúng ta chỉ là gọi tới method addNewQuestion() 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 thêm mới question cho Composite Question Service rồi đó các bạn. Test thử xem sao nhé.Questions Management – Composite Question Service – Xây dựng API thêm mới question

 

5/5 - (1 bình chọn)

Add Comment