Như mọi người đã thấy việc test API là rất quan trọng khi trên giao diện không có. API sẽ trả về message để biết lỗi do đâu. Đối với trường hợp không trả về message lỗi hoặc báo 1 đoạn code dài, ta không thể đọc code được thì sẽ dựa vào status code. Dựa vào đó ta có thể biết được đang bị lỗi gì.
Trước hết ta sẽ tìm hiểu định nghĩ về 1 vài định nghĩa:
1. HTTP Response (HTTP phản hồi) là gì?
Khi nhận và phiên dịch 1 HTTP Request, máy chủ sẽ gửi 1 tín hiệu phản hồi là 1 HTTP Response. HTTP Response bao gồm:
-Status line: Dòng trạng thái status code, time, băng thông.
-Body: chứa các data, message.
-Cookies
-Headers
-Test Results
2. Status code là gì?
Mã trạng thái HTTP Status code là mã code máy chủ trả về sau mỗi lần gửi yêu cầu. Tất cả yêu cầu mà máy chủ nhận được đều sẽ được trả về 1 phản hồi và 1 mã code tương ứng.
- 1xx (100 – 199): Phản hồi thông tin
- 2xx (200 – 299): Phản hồi thành công
- 3xx (300 – 399): Điều hướng
- 4xx (400 – 499): Lỗi phía client
- 5xx (500 – 599): Lỗi phía máy chủ
2.1 1xx: Phản hồi thông tin
Yêu cầu đã được chấp nhận và quá trình xử lý yêu cầu của bạn đang được tiếp tục.
Một số status code thường gặp:
Status code | Mô tả |
100 Continue (Tiếp tục) | Chỉ một phần của yêu cầu được nhận bởi máy chủ (có thể là header và Client cần gửi tiếp body) |
101 Switching Protocol (Đổi Protocol) | Người yêu cầu hỏi máy chủ về việc thanh đổi Protocol và máy chủ đã chấp nhận điều đó. |
102 Processing (Đang xử lý) | Máy chủ đã nhận và đang xử lý yêu cầu, nhưng chưa có phản hồi nào cho yêu cầu đó. Đang trong quá trình xử lý thông tin. |
2.2 2xx: Phản hồi thành công
Yêu cầu của bạn đã được máy chủ tiếp nhận, hiểu và xử lý thành công.Thông thường sẽ trả thêm message hoặc dữ liệu cho yêu cầu đó.
Một số status code thường gặp:
Status code | Mô tả |
200 OK | Yêu cầu đã được tiếp nhận và xử lý thành công. VD: Lấy thông tin username thành công |
201 Created (Tạo thành công) | Yêu cầu đã được xử lý, kết quả của việc xử lý tạo ra một resource mới. Thường là phương thức POST, PUT. VD: Tạo 1 usename thành công. |
202 Accepted (Chấp nhận) | Yêu cầu được chấp nhận cho xử lý, nhưng việc xử lý đang đợi và chưa hoàn thành. |
204 No Content (Không có nội dung) | Máy chủ đã xử lý thành công yêu cầu nhưng không trả về bất cứ dữ liệu nào.(Không có dữ liệu) |
205 Reset Content (Đặt lại nội dung) | Máy chủ đã xử lý thành công yêu cầu nhưng không trả về bất cứ content nào. Phản hồi này yêu cầu phía Client phải thiết lập lại document view. |
2.3 3xx: Điều hướng
Phía client cần thực hiện thêm hành động bổ sung để hoàn tất yêu cầu. Hoặc điều hướng client đến 1 URL, URI mới và tạm thời.
Một số status code thường gặp:
Status code | Mô tả |
300 Multiple Choice (Nhiều lựa chọn) | Một danh sách các link. Người sử dụng có thể chọn 1 link và tới vị trí đó. Tối đa 5 địa chỉ. Ví dụ: List các file video với format khác nhau. |
301 Moved Permanently (Đã di chuyển vĩnh viễn) | Yêu cầu hiện tại và yêu cầu sau yêu cầu di chuyển tới một URI mới. |
302 Found (Đã tìm thấy) | Yêu cầu client chuyển hướng đến một URL tạm thời. |
303 See Other (Xem thêm) | Phản hồi trả về của một yêu cầu có thể tìm thấy ở một URL khác bằng cách sử dụng phương thức GET. |
304 Not Modified (Không được sửa đổi) | Được sử dụng cho mục đích lưu vào bộ nhớ cache. Nó cho client biết rằng phản hồi chưa được điều chỉnh, nên client có thể tiếp tục sử dụng cùng phiên bản phản hồi trong bộ nhớ cache. |
2.4 4xx: Lỗi phía client
Lỗi từ phía client trong khi gửi yêu cầu. Yêu cầu chứa cú pháp không chính xác hoặc không được thực hiện.
Một số status code thường gặp:
Status code | Mô tả |
400 Bad Request (Yêu cầu không hợp lệ) | Máy chủ không thể xử lý hoặc sẽ không xử lý các request lỗi từ phía client. VD: Cú pháp không hợp lệ. |
401 Unauthorized (Phân quyền) | Yêu cầu xác thực là bắt buộc và đã không thành công. Lỗi phân quyền |
403 Forbidden (Chặn) | Truy cập bị từ chối. VD: ip bị chặn |
404 Not Found (Không tìm thấy) | Trang được yêu cầu không tồn tại ở thời điểm hiện tại, tuy nhiên có thể tồn tại trong tương lai. |
405 Method Not Allowed (Phương thức không hỗ trợ) | Trang được yêu cầu không hỗ trợ method của yêu cầu. VD: chỉ xử lý method POST, không xử lý method GET |
Status code | Mô tả |
406 Not Acceptable (Không thể chấp nhận) | Máy chủ chỉ có thể tạo một phản hồi mà không được chấp nhận bởi Client. |
407 Proxy Authentication Required (Yêu cầu xác thực proxy) | Bạn phải xác nhận với một máy chủ ủy quền trước khi yêu cầu này được phục vụ. |
408 Request Timeout (Hết thời gian yêu cầu) | Yêu cầu tốn thời gian dài hơn thời gian máy chủ được chuẩn bị để đợi. |
409 Conflict (Xung đột) | Yêu cầu không thể được hoàn thành bởi vì sự xung đột, ví dụ như là xung đột giữa nhiều chỉnh sửa đồng thời. |
Status code | Mô tả |
410 Gone (Mất) | Giống 404 nhưng tài nguyên/ trang cũng không tồn tại trong tương lai. |
411 Length Required (Độ dài yêu cầu) | Chưa định nghĩa trường “Content-Length” trong header của yêu cầu gửi đi. |
412 Precondition Failed (Điều kiện tiên quyết không thành công) | Máy chủ sẽ không đáp ứng một trong những điều kiện tiên quyết của Client trong yêu cầu. |
413 Payload Too Large (Tải trọng quá lớn) | Máy chủ sẽ không chấp nhận yêu cầu, bởi vì đối tượng yêu cầu là quá rộng. |
414 URI Too Long (URI quá dài) | URI được cung cấp là quá dài để máy chủ xử lý. |
2.5 5xx: Lỗi phía máy chủ
Máy chủ không thể hoàn thành yêu cầu được cho là hợp lệ. Khi 5xx xảy ra, bạn chỉ có thể đợi để bên hệ thống máy chủ xử lý xong.
Một số status code thường gặp:
Status code | Mô tả |
500 Internal Server Error (Lỗi máy chủ nội bộ) | Một thông báo chung, được đưa ra khi máy chủ gặp phải một trường hợp bất ngờ (Chủ yếu do lỗi lập trình, kết nối database). |
501 Not Implemented (Không được thực hiện) | Máy chủ không hỗ trợ xử lý yêu cầu này. |
502 Bad Gateway (Cổng xấu) | Máy chủ đã hoạt động như một cổng hoặc proxy và nhận được một phản hồi không hợp lệ từ máy chủ nguồn. |
503 Service Unavailable (Dịch vụ không có sẵn) | Máy chủ hiện tại không có sẵn (hiện đang quá tải hoặc bị down để bảo trì). Đây chỉ là trạng thái tạm thời. |
504 Gateway Timeout (Cổng time out) | Máy chủ đã hoạt động như một cổng hoặc proxy và không nhận được một phản hồi từ máy chủ nguồn. |
505 HTTP Version Not Supported (phiên bản HTTP không hỗ trợ) | Máy chủ không hỗ trợ phiên bản “giao thức HTTP”. |