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 xoá question 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 CompositeQuestionService với implementation là CompositeQuestionServiceImpl có trách nhiệm thao tác với Composite Question Service, một ApiQuestionController định nghĩa các API của API Question Service sẽ bắt đầu với “/question” và thông tin về Composite Question 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 xóa question, đầu tiên, mình sẽ thêm mới một phương thức deleteQuestion() trong interface CompositeQuestionService:
1 |
Mono<HttpStatus> deleteQuestion(String questionId); |
với phần implementation của method này trong class CompositeQuestionServiceImpl như sau:
1 2 3 4 5 6 7 8 9 10 11 |
@Override public Mono<HttpStatus> deleteQuestion(String questionId) { WebClient webClient = WebClient.builder() .baseUrl(getServiceUrl()) .build(); return webClient.delete() .uri("/question/" + questionId) .exchange() .map(response -> response.statusCode()); } |
Như các bạn thấy, ở đây mình đã sử dụng đối tượng WebClient để kết nối tới Composite Question Service và gọi API xóa question của service này với URI “/question/{id}”.
Tiếp theo, mình sẽ thêm mới một method trong ApiQuestionController gọi tới phương thức deleteQuestion() của CompositeQuestionService để expose một DELETE request “/question/{id}” như sau:
1 2 3 4 5 |
@DeleteMapping("/{id}") public Mono<ResponseEntity<HttpStatus>> deleteQuestion(@PathVariable(value = "id") String questionId) { return compositeQuestionService.deleteQuestion(questionId) .map(statusCode -> new ResponseEntity<HttpStatus>(statusCode)); } |
Đến đây thì chúng ta đã hoàn thành việc xây dựng API xoá question cho API Question Service, hãy test thử xem sao nhé các bạn.
Giả sử hiện tại ứng dụng Questions Management của chúng ta đang có những question như sau:
thì khi mình request để xoá question với id “5b68de7ce0d76908736648ea”, kết quả sẽ là: