1. API Error Handling là gì?

API Error Handling là cách API phát hiện, xử lý và trả về lỗi một cách nhất quán khi request không thể thực hiện thành công.

Ví dụ:

Client
  ↓
API
  ↓
Có lỗi?
 ├── Không → Success Response
 └── Có → Error Handling → Error Response mục tiêu của API error giúp không để api bị crash, trả đúng trạng thái http codes cho biết người dùng biết đang xảy ra lỗi gì giúp không làm lộ thông tin nhạy cảm.

2. Các loại lỗi thường gặp

lỗi thứ nhất là validation error gửi dữ liệu không hợp lệ.

POST /users

email = "abc"
age = -1

→ 400 Bad Request hoặc 422 Unprocessable Content.

lỗi thứ hai Authentication Error lỗi xác thực không thành công

→ 401 Unauthorized.

lỗi thứ ba Authorization Error lỗi phân quyền thất  bại

→ 403 Forbidden.

3. Exception Handling

Trong Backend, lỗi thường được biểu diễn bằng Exception.

Ví dụ:

if (user == null) {
    throw new UserNotFoundException();
}

Thay vì mỗi Controller tự xử lý:

try {
    ...
} catch (...) {
    ...
}

có thể dùng Global Exception Handler để tập trung xử lý lỗi.

Ý tưởng:

Service
   ↓
throw Exception
   ↓
Global Exception Handler
   ↓
HTTP Error Response

4. Error Handling tốt cần đảm bảo

1. Status Code đúng

404 → Not Found
409 → Conflict
500 → Server Error

2. Response nhất quán

Các API nên có cùng cấu trúc error response.

3. Message rõ ràng

Client phải biết vấn đề nằm ở đâu nếu lỗi có thể sửa được.

4. Không leak thông tin

Không trả stack trace, SQL error hoặc thông tin nội bộ.

5. Log lỗi ở Server

Đặc biệt với lỗi 5xx.

5. Validation → Exception → Error Response

Có thể nhìn toàn bộ flow như sau:

Request
   ↓
Validation
   ↓
Business Logic
   ↓
Có lỗi?
   ↓
throw Exception
   ↓
Global Exception Handler
   ↓
HTTP Status Code + JSON Error
   ↓
Client 

có thể nhìn vào flow này và trả lời như sau: khi client gửi request sẽ đưa vào validation để kiểm tra dữ liệu 
đưa vào có đúng không có lỗi hay không sau đó sẽ chuyển sang kiểm tra logic nghiệp vụ của request đó sau đó nếu 
có lỗi sẽ chuyển vào lỗi exception đưa ra sau đó sát định lỗi đó cuối cùng đưa ra trạng thái của lỗi đó và xuất 
ra thông báo lỗi json error.

6. Một số phương pháp khi gặp lỗi API trong REST API

  1. sử dụng trạng thái http đúng cách. REST API phụ thuộc rất nhiều vào http codes để thể hiện lỗi hoặc các hành động thông qua http
  2. cung cấp đầy đủ thông báo lỗi REST có bảng chất là không trạng thái điều này có nghĩa là tất cả các thông báo lỗi phải cung cấp các thông tin cần thiết để khách hành hiểu mà không dựa vào ngữ cảnh.
  3. sử dụng các định dạng phản hồi được chuẩn hóa duy trì một thông báo nhất quán cho các thông báo lỗi ví dụ REST API hỗ trợ các trường thông báo như error, messege,code.

Bài viết khác

JWT Token Theft & Payload Tampering

Ở bài JWT & Token Authentication, ta đã biết JWT được sử dụng để xác thực user sau khi đăng nhập: Login ↓ Server xác thực username/password ↓ Access Token + Refresh Token ↓ Client lưu token ↓ Gửi Access Token trong mỗi request Ví dụ: GET /api/profile Authorization: Bearer <access-token> Server nhận token, verify […]

Test Types(Các loại kiểm thử phần mềm)

1. Lời mở đầu và vai trò định hình phạm vi của Test Types trong kiểm thử phần mềm: Trong quy trình phát triển và kiểm định chất lượng phần mềm, nếu như Testing Levels (Các cấp độ kiểm thử như Unit, Integration, System, Acceptance) giải quyết câu hỏi kiểm thử được thực hiện ở […]

PHP & Laravel Fundamentals

1. PHP là gì? PHP là ngôn ngữ lập trình phía server, thường dùng để xây dựng backend và web application. Flow cơ bản: Client ↓ HTTP Request PHP / Laravel ↓ Business Logic ↓ Database ↓ HTTP Response Laravel được xây dựng trên PHP, nên muốn học Laravel cần nắm những nền tảng PHP […]

JWT & Token Authentication

1. Token Authentication là gì? Token Authentication là cơ chế xác thực trong đó Client đăng nhập và nhận một Token từ Server. Sau đó, Client sử dụng Token này trong các request tiếp theo để chứng minh rằng request đã được xác thực. Thay vì gửi lại username/password cho mỗi request: Login ↓ Access […]

Series 1 — Web Fundamentals: DNS – Browser

Series 1 — Web Fundamentals   Internet → HTTP/HTTPS → DNS → Browser   Bài 3 :DNS & Domain   DNS & Domain – Làm thế nào Domain được chuyển thành IP? Ở hai bài trước, chúng ta đã tìm hiểu: Internet là gì? Client và Server là gì? IP Address là gì? HTTP/HTTPS dùng […]

Authentication & Authorization

1. Authentication & Authorization là gì? Hai khái niệm này thường đi cùng nhau nhưng khác nhau hoàn toàn. Authentication – Xác thực trả lời cho câu hỏi bạn là ai Ví dụ: Đăng nhập bằng: – Username + Password – Access Token – JWT – OAuth 2.0 Server xác định danh tính của User. […]

Leave a Reply

Your email address will not be published. Required fields are marked *