- vừa được xem lúc

Bắt và xử lý exception trong Java spring và RESTful API

0 0 12

Người đăng: NamTC

Theo Viblo Asia

Để nhận và xử lý exception trong restfull api java spring, bạn có thể sử dụng một trong hai cách sau:

Cách 1: Sử dụng annotation @ExceptionHandler

Đây là cách phổ biến nhất để xử lý exception trong restfull api java spring. Để sử dụng cách này, bạn cần thêm annotation @ExceptionHandler() vào controller của bạn. Annotation này sẽ chỉ định phương thức nào sẽ được gọi khi một exception cụ thể được ném ra.

Ví dụ:

@RestController public class CustomerController {

@ExceptionHandler(CustomerNotFoundException.class)
public ResponseEntity<ErrorResponse> handleCustomerNotFoundException(CustomerNotFoundException exception) { ErrorResponse errorResponse = new ErrorResponse(); errorResponse.setCode(404); errorResponse.setMessage(exception.getMessage()); return ResponseEntity.status(404).body(errorResponse);
} @GetMapping("/customers/{id}")
public Customer getCustomerById(@PathVariable Long id) { if (id == 1) { throw new CustomerNotFoundException("Customer with id 1 does not exist"); } return new Customer();
}

}

Trong ví dụ này, chúng ta sử dụng annotation @ExceptionHandler() để chỉ định phương thức handleCustomerNotFoundException() sẽ được gọi khi một exception CustomerNotFoundException được ném ra. Phương thức này sẽ trả về một phản hồi HTTP với mã lỗi 404 và thông báo lỗi.

Cách 2: Sử dụng annotation @ControllerAdvice

Nếu bạn cần xử lý nhiều exception khác nhau trong controller của mình, bạn có thể sử dụng annotation @ControllerAdvice. Annotation này sẽ tạo ra một lớp chứa các phương thức @ExceptionHandler().

Ví dụ:

@ControllerAdvice public class GlobalExceptionHandler {

@ExceptionHandler(CustomerNotFoundException.class)
public ResponseEntity<ErrorResponse> handleCustomerNotFoundException(CustomerNotFoundException exception) { ErrorResponse errorResponse = new ErrorResponse(); errorResponse.setCode(404); errorResponse.setMessage(exception.getMessage()); return ResponseEntity.status(404).body(errorResponse);
} @ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleGenericException(Exception exception) { ErrorResponse errorResponse = new ErrorResponse(); errorResponse.setCode(500); errorResponse.setMessage(exception.getMessage()); return ResponseEntity.status(500).body(errorResponse);
}

}

Trong ví dụ này, chúng ta sử dụng annotation @ControllerAdvice() để tạo ra một lớp GlobalExceptionHandler chứa hai phương thức @ExceptionHandler(). Phương thức đầu tiên sẽ xử lý exception CustomerNotFoundException, còn phương thức thứ hai sẽ xử lý tất cả các exception khác.

Cách trả về phản hồi HTTP

Khi xử lý exception trong restfull api java spring, bạn cần trả về một phản hồi HTTP với mã lỗi phù hợp. Mã lỗi HTTP tiêu chuẩn được sử dụng để chỉ định loại lỗi đã xảy ra. Ví dụ:

  • Mã lỗi 400 được sử dụng cho lỗi phía client, chẳng hạn như tham số không hợp lệ.
  • Mã lỗi 401 được sử dụng cho lỗi không được phép, chẳng hạn như người dùng không có quyền truy cập vào tài nguyên.
  • Mã lỗi 403 được sử dụng cho lỗi bị cấm, chẳng hạn như người dùng cố gắng truy cập một tài nguyên bị cấm.
  • Mã lỗi 404 được sử dụng cho lỗi không tìm thấy, chẳng hạn như tài nguyên không tồn tại.
  • Mã lỗi 500 được sử dụng cho lỗi phía server.

Bình luận

Bài viết tương tự

- vừa được xem lúc

RESTful API là gì ?

RESTful API là gì . Dù hiện tại cũng có rất nhiều bài viết về RESTful API nhưng mình vẫn muốn viết về vấn đề này để đóng góp một phần ý kiến trong việc thiết kế RESTful API.

0 0 50

- vừa được xem lúc

Xây dựng RESTful API đơn giản với NodeJS

Xin chào mọi người, hôm nay mình muốn demo cho những bạn chưa từng làm việc với ngôn ngữ Nodejs hoặc đơn giản là muốn tạo một RESTful API với NodeJS . REST là gì.

0 0 25

- vừa được xem lúc

Xây dựng API với Laravel

Giới thiệu. Với các bạn làm dự án mà yêu cầu chạy trên môi trường web và app .

0 0 44

- vừa được xem lúc

RESTful API trong Laravel cho người mới bắt đầu

Mở đầu. Vấn đề: Để thực hiện các thao tác CRUD 1 resource có nhiều cách xây dựng và để tạo thuận lợi cho việc tái sử dụng thì phải có các tiêu chuẩn chung.

0 0 68

- vừa được xem lúc

Unit test cho Nodejs RESTful API với Mocha và Chai

Giới thiệu. Chúng ta có thể tìm thấy nhiều ví dụ khởi tạo một RESTful API bằng Nodejs.

0 0 34

- vừa được xem lúc

RESTful API, Something You Might Not Know

Have you ever wondered why we use POST method for creating resouces and GET for retrieving Data but not the other way around. Let's have a look at some considerations.

0 0 3