HTTP Status Code - Hiểu nhanh , nhớ lâu, dễ nuốt
Lời mở đầu
Trong lúc học Spring Boot, mình thường xuyên phải test API bằng Postman, Swagger,… Và thế là ngày nào cũng gặp mấy con số như 200, 404, 401, 500….
Lúc đầu thì thấy quen quen, nhưng mỗi khi cần giải thích lại hoặc dùng cho đúng ngữ cảnh thì lại hay bị lẫn.
Vì vậy mình viết bài này như một cuốn sổ tay cá nhân:
Vừa học
Vừa ghi lại cho nhớ
Sau này cần thì mở ra xem
Nếu bạn cũng đang học backend hoặc làm API giống mình, hy vọng bài viết này giúp bạn hiểu rõ hơn mấy “con số khó ưa” này 😄
1. HTTP Status Code là gì??
Hiểu đơn giản thì HTTP Status Code là cách server trả lời cho client biết "request mày gửi lên thì tao xử lý như này nài"
Mỗi request gửi đi, server sẽ trả về
- Một mã số
- Kèm theo ý nghĩa của nó
Chỉ cần nhìn mã đó là biết
- Thành công hay không
- Sai do mình hay do server
- Có cần đăng nhập/ phân quyền hay không
- Chia nhóm cho dễ nhét vào não

HTTP Status Code được chia thành 5 nhóm (ae nhìn đầu là đoán được vấn đề)
| Nhóm | Ý nghĩa |
|---|---|
| 1xx | Server đã nhận, đang xử lý |
| 2xx | Thành công |
| 3xx | Chuyển hướng |
| 4xx | Lỗi phía client |
| 5xx | Lỗi phía server |
3. Nhóm 2xx - thành công
200 - OK
Request chạy ổn, dữ liệu trả về đầy đủ. Thường khi gọi API GET
201 - Created
Tạo mới thành công Thường dùng khi
- Đăng ký tài khoản
- Tạo user, product, post,...
204 - No Content
Request thành công nhưng không trả về dữ liệu
Hay dùng khi
- Xoá dữ liệu
- Update nhưng không cần response body
4. Nhóm 3xx - chuyển hướng
301 - Moved Permanently
Chuyển hướng vĩnh viễn Thường gặp trong SEO hoặc đổi domain
302 - Found
Chuyển hướng tạm thời
304 - Not Modified
Dùng cho cache Nói nôm na la: "Dữ liệu không đổi, mày dùng lại cái cũ đi cho nhanh"
5. Nhóm 4xx - Lỗi do phái Client
Nhóm này gặp nhiều nhất khi code API
400 - Bad requets
Request gửi lên sai format hoặc thiếu trường
401 - Unauthorized
Chưa đăng nhập, thiếu token
403 - ForBidden
Đã đăng nhập, nhưng ko có đủ quyền
404 - Not found
Không tìm thấy resource (quen luôn r -gặp suốt
)
409 - Conflict
Xung đột giữ liệu ví dụ:
- email tồn tại
- username bị trùng
429 - To many requests
Gửi request quá nhiều -> bị chặn
6. Nhóm 5xx - Lỗi từ server
Nhóm này thường là server tự bán vào chân mình
500 - Internal server error
Code bug, exception , lỗi logic
502 - bad gateway
Gateway nhận response lỗi từ server phía sau
503 - service unavaiable
Server đang quá tải hoặc bảo trì
504 - gateway timeout
Server phía sau không phản hồi kịp
7. Bảng tổng hợp nhanh (để tra đỡ mệt
)
| Bảng | Ý nghĩa |
|---|---|
| 200 | OK |
| 201 | Created |
| 204 | Request thành công nhưng không trả về dữ liệu |
| 301 | Chuyển hướng vĩnh viễn |
| 302 | Chuyển hướng tạm thời |
| 304 | "Dữ liệu không đổi, mày dùng lại cái cũ đi cho nhanh" |
| 400 | Request gửi lên sai format hoặc thiếu trường |
| 401 | Chưa đăng nhập, thiếu token |
| 403 | Đã đăng nhập, nhưng ko có đủ quyền |
| 404 | Không tìm thấy resource (quen luôn r -gặp suốt ) |
| 409 | Xung đột giữ liệu |
| 429 | Gửi request quá nhiều -> bị chặn |
| 500 | Code bug, exception , lỗi logic |
| 502 | Gateway nhận response lỗi từ server phía sau |
| 503 | Server đang quá tải hoặc bảo trì |
| 504 | Server phía sau không phản hồi kịp |
8. Kết thúc
HTTP Status Code nhìn thì toàn số, nhưng hiểu được rồi thì thấy cũng cũng
Dùng đúng status
- API nhìn chuyên nghiệp hơn
- Debug đỡ đau đầu
- Người khác đọc code cũng hiểu hơn
Bài này mình viết trong lúc học, chắc chắn còn nhiều thiếu sót
Nếu có sai hoặc chưa chuẩn, mong được góp ý thêm để mình sửa và học tốt hơn
All rights reserved