Sử dụng status code sao cho đúng

Bài viết này chỉ đưa ra một số ví dụ về cách sử dụng status code, không đưa ra tất cả các trường hợp có thể xảy ra.

Table of Contents

200 OK

Cái này dễ ẹc nè, nó được sử dụng khi mọi thứ đều ổn.

Ví dụ như khi bạn gửi một request lấy thông tin của một user,

và server trả về thông tin của user đó, thì status code sẽ là 200 OK.

201 Created

Tạo một resource mới thành công.

  • đăng ký tài khoản thành công
  • tạo một bài viết mới thành công
  • tạo một comment mới thành công
  • ....

204 No Content

1 request không trả về bất kỳ thông tin nào.

  • xóa bài viết thành công (không cần trả về thông tin bài viết nếu không cần thiết)
  • tạo user thành công (không cần trả về thông tin user, vì frontend không sử dụng nó)
  • ....

400 Bad Request

1 request không thể được xử lý vì request không hợp lệ.

  • đăng ký tài khoản thất bại vì email không hợp lệ
  • book vé máy bay thất bại vì ngày đi không hợp lệ
  • không thể đặt bàn nhà hàng vì số lượng người quá nhiều
  • ....

401 Unauthorized

1 request không thể được xử lý vì người dùng chưa được xác thực.

  • đăng nhập thất bại vì sai thông tin đăng nhập
  • đăng nhập thất bại vì tài khoản chưa được kích hoạt
  • ....

403 Forbidden

1 request không thể được xử lý vì người dùng không có quyền truy cập.

  • không thể xóa bài viết của người khác
  • không thể xóa comment của người khác
  • không thể vào trang admin vì không phải admin
  • ....

404 Not Found

1 request không thể được xử lý vì resource không tồn tại.

  • không tìm thấy bài viết
  • không tìm thấy comment
  • không tìm thấy user
  • ....

405 Method Not Allowed

1 request không thể được xử lý vì method không được hỗ trợ.

Ví dụ: api /users không hỗ trợ method DELETE, nhưng bạn lại gửi request DELETE lên thì sẽ sẽ trả về status code 405.

409 Conflict

1 request không thể được xử lý vì một conflict nào đó.

  • đăng ký tài khoản thất bại vì email đã được sử dụng
  • đặt ghế F7, F8 để xem phim với người iu, nhưng F7, F8 đã có người đặt rồi, người iu giận, chia tay
  • đang đổi tên facebook thành Nhat Bui, nhưng ngiu đã đổi vài giây trước rồi, giờ đổi nữa thì sẽ bị conflict
  • ....

422 Unprocessable Entity

1 request không thể được xử lý vì dữ liệu không hợp lệ.

  • quy định email phải có dạng @gmail.com, nhưng bạn lại nhập @yahoo.com
  • mật khẩu phải có ít nhất 8 ký tự, nhưng bạn lại nhập 123456
  • số điện thoại phải có 10 số, nhưng bạn lại nhập 1234567
  • ....

429 Too Many Requests

1 request không thể được xử lý vì quá nhiều request.

  • quá nhiều request lấy thông tin user
  • quá nhiều request lấy thông tin bài viết
  • quá nhiều request lấy thông tin comment
  • gọi api quá nhiều lần trong 1 khoảng thời gian
  • ....

500 Internal Server Error

1 request không thể được xử lý vì lỗi từ phía server.

  • lỗi kết nối database
  • lỗi gửi mail
  • lỗi gửi sms
  • lỗi gửi notification
  • lỗi gửi request tới 1 api khác
  • ....

Tham khảo thêm