Tổng Quan Về HTTP Status Code 201

HTTP status code 201, hay còn được gọi là 201 Created, là một mã trạng thái phản hồi từ phía máy chủ, thông báo rằng yêu cầu từ phía client đã được xử lý thành công và dẫn đến việc tạo ra một tài nguyên hoàn toàn mới. Đây là mã trạng thái nằm trong nhóm 2xx (Successful Responses), đại diện cho các phản hồi thành công. Khi bạn thấy status code 201 xuất hiện, điều đó có nghĩa là hành động như POST, PUT hoặc PATCH đã hoàn tất và một thực thể mới đã được sinh ra trên hệ thống.
Mã trạng thái 201 đóng vai trò quan trọng trong kiến trúc RESTful API và các ứng dụng web hiện đại. Nó giúp lập trình viên và hệ thống xác định chính xác trạng thái của tài nguyên sau khi thực hiện các thao tác ghi dữ liệu. So với mã 200 OK chỉ đơn thuần báo thành công, 201 mang ý nghĩa cụ thể hơn: một tài nguyên mới đã được tạo ra và thường kèm theo URL của tài nguyên đó trong header Location.
Bản Chất Kỹ Thuật Của HTTP Status Code 201

Cơ Chế Hoạt Động Của Mã 201
Khi client gửi một yêu cầu POST đến máy chủ để tạo một đối tượng mới (ví dụ: thêm người dùng, bài viết, đơn hàng), máy chủ sẽ xử lý dữ liệu đầu vào, xác thực thông tin, lưu trữ vào cơ sở dữ liệu, và sau đó trả về phản hồi với status code 201. Phản hồi này thường đi kèm với header Location chứa URI của tài nguyên vừa được tạo, giúp client có thể truy cập trực tiếp vào tài nguyên đó mà không cần phải đoán định.
Ví dụ minh họa về một phản hồi HTTP 201 điển hình:
- Header: HTTP/1.1 201 Created
- Location: https://api.example.com/users/12345
- Content-Type: application/json
- Body: {“id”: 12345, “name”: “Nguyễn Văn A”, “created_at”: “2025-01-15T10:30:00Z”}
- Tăng tính rõ ràng cho API: Client biết chính xác tài nguyên đã được tạo, không nhầm lẫn với cập nhật hay truy vấn.
- Cải thiện khả năng tự động hóa: Các công cụ, bot hay hệ thống tích hợp có thể dựa vào mã 201 để thực hiện các bước tiếp theo (ví dụ: gửi email xác nhận, redirect đến trang chi tiết).
- Tuân thủ chuẩn RESTful: Sử dụng đúng mã trạng thái HTTP giúp API của bạn chuyên nghiệp và dễ bảo trì hơn.
- Hỗ trợ debug và monitoring: Khi log hệ thống hiển thị 201, bạn biết ngay hoạt động tạo mới diễn ra thành công, dễ dàng phát hiện lỗi nếu có.
- Tối ưu SEO cho API documentation: Các công cụ tìm kiếm và lập trình viên đánh giá cao tài liệu API chính xác, giúp tăng uy tín kỹ thuật.
- Không phải lúc nào cũng trả body: Nhiều lập trình viên mắc lỗi trả về body trống với mã 201. Theo chuẩn, nên trả về thông tin tài nguyên mới tạo hoặc ít nhất là URI của nó.
- Xung đột với mã 200: Một số API trả về 200 cho mọi trường hợp thành công, kể cả tạo mới. Điều này gây khó khăn cho việc xác định chính xác hành động đã thực hiện.
- Không phù hợp cho tác vụ bất đồng bộ: Nếu việc tạo tài nguyên mất thời gian hoặc chưa hoàn tất ngay lập tức, bạn nên dùng 202 Accepted thay vì 201.
- Yêu cầu header Location: Không phải tất cả các framework đều tự động thêm header Location khi trả về 201, bạn cần đảm bảo điều này trong code.
So Sánh Status Code 201 Với Các Mã Trạng Thái 2xx Khác
| Mã trạng thái | Tên | Ý nghĩa chính | Khi nào sử dụng |
|---|---|---|---|
| 200 | OK | Yêu cầu thành công, trả về dữ liệu | GET, PUT, PATCH (không tạo mới) |
| 201 | Created | Tạo tài nguyên mới thành công | POST (thường dùng), PUT (nếu tạo mới) |
| 202 | Accepted | Yêu cầu được chấp nhận nhưng chưa xử lý xong | Tác vụ bất đồng bộ, queue |
| 204 | No Content | Thành công nhưng không có nội dung trả về | DELETE, PUT cập nhật không trả body |
Khi Nào Máy Chủ Trả Về Status Code 201?

Phương Thức POST Và Tạo Tài Nguyên Mới
Trường hợp phổ biến nhất là khi client thực hiện yêu cầu POST đến một endpoint như /api/users hoặc /api/articles. Nếu dữ liệu hợp lệ và tài nguyên được tạo thành công, server phải trả về mã 201. Đây là hành vi chuẩn mực theo đặc tả HTTP/1.1. Ví dụ thực tế: bạn đăng ký tài khoản trên một trang web, hệ thống tạo user mới và trả về 201 kèm thông tin tài khoản vừa tạo.
Phương Thức PUT Và Tạo Mới Tài Nguyên
Mặc dù PUT thường được dùng để cập nhật, nhưng nếu client chỉ định một URI chưa tồn tại và gửi dữ liệu đầy đủ, server có thể tạo mới tài nguyên tại URI đó và trả về 201. Tuy nhiên, nhiều API design chọn trả về 200 cho trường hợp cập nhật và 201 cho trường hợp tạo mới thông qua PUT.
Phương Thức PATCH Trong Một Số Trường Hợp Đặc Biệt
PATCH thường dùng để cập nhật một phần tài nguyên. Nhưng nếu tài nguyên chưa tồn tại, một số thiết kế API có thể cho phép PATCH tạo mới và trả về 201. Tuy nhiên, điều này không phổ biến và thường không được khuyến khích vì vi phạm tính nhất quán.
Lợi Ích Khi Sử Dụng Status Code 201 Đúng Cách
Hạn Chế Và Những Điều Cần Lưu Ý Khi Sử Dụng Mã 201

Status Code 201 Trong Thực Tế Và Ứng Dụng Cụ Thể
Xây Dựng RESTful API Với Post và Trả Về 201
Giả sử bạn đang phát triển một API quản lý sản phẩm. Khi người dùng thêm một sản phẩm mới, endpoint POST /api/products sẽ nhận dữ liệu JSON, kiểm tra tính hợp lệ, lưu vào cơ sở dữ liệu và trả về phản hồi với status code 201 cùng thông tin sản phẩm vừa tạo. Điều này giúp phía frontend hiểu rằng sản phẩm đã được tạo và có thể redirect đến trang chi tiết hoặc hiển thị thông báo thành công.
Ví Dụ Với Ngôn Ngữ Lập Trình Phổ Biến
Trong Node.js với Express,
Mã 200 báo yêu cầu thành công nói chung, thường dùng cho GET, PUT, PATCH. Mã 201 chỉ dùng khi một tài nguyên mới được tạo ra, thường kết hợp với POST và có header Location.
Có bắt buộc phải trả body khi dùng 201 không?
Không bắt buộc nhưng rất khuyến khích. Thông thường, body chứa thông tin về tài nguyên vừa tạo (ID, URI, dữ liệu cơ bản). Nếu không có body, hãy đảm bảo header Location đầy đủ.
Khi nào nên dùng 202 thay vì 201?
Khi việc tạo tài nguyên không hoàn tất ngay lập tức (xử lý bất đồng bộ, hàng đợi), bạn dùng 202 Accepted. Nếu tài nguyên đã được tạo hoàn toàn trong cùng một request, hãy dùng 201.
Status code 201 có dùng cho PUT được không?
Có, nếu PUT tạo mới tài nguyên tại một URI chưa tồn tại. Tuy nhiên, nhiều thiết kế API khuyến nghị dùng POST để tạo và PUT để cập nhật nhằm tránh nhầm lẫn.
Làm thế nào để kiểm tra API có trả về 201 đúng cách?
Sử dụng Postman hoặc cURL: gửi POST với dữ liệu hợp lệ và kiểm tra status code trong response. Đồng thời xác nhận header Location trỏ đến đúng tài nguyên mới.
Có nên dùng 201 cho tạo nhiều tài nguyên cùng lúc không?
Nếu bạn tạo nhiều tài nguyên trong một request, có thể trả về 201 kèm danh sách các tài nguyên mới. Tuy nhiên, một số API chọn 200 hoặc 207 Multi-Status tùy thiết kế.
- Theme WordPress Responsive Lỗi: Nguyên Nhân, Cách Khắc Phục và Phòng Tránh Toàn Diện
- Anchor Text Optimization Là Gì? Hướng Dẫn Chi Tiết Tối Ưu Anchor Text Chuẩn SEO 2025
- Font Preload Là Gì? Hướng Dẫn Tối Ưu Tải Font Chữ Để Cải Thiện Core Web Vitals
- Image Lazy Loading Là Gì? Hướng Dẫn Toàn Diện Tối Ưu Tốc Độ Web
- Xử Lý Lỗi WordPress PHP Deprecated: Hướng Dẫn Toàn Diện Từ A Đến Z Cho Người Quản Trị















