HTTP methods

Sơ đồ kiến trúc giao tiếp Client Server qua phương thức HTTP
September 6, 2025

1. Bảng tổng hợp các thuộc tính của phương thức HTTP

Các HTTP method (phương thức HTTP) là các hành động được định nghĩa trong giao thức HTTP để máy khách (client) giao tiếp với máy chủ (server). Mỗi phương thức có mục đích riêng.

Để có một cái nhìn tổng quan trước khi đi vào phân tích chi tiết, người làm kỹ thuật có thể tham khảo bảng đối chiếu thuộc tính dưới đây:

MethodMục đíchSafeIdempotentRequest BodyResponse Body
📥 GETLấy dữ liệu✔️✔️Có thể✔️
POSTTạo mới resource✔️✔️
✏️ PUTCập nhật toàn bộ✔️✔️✔️
🩹 PATCHCập nhật một phần✔️✔️
🗑️ DELETEXóa resource✔️✔️/❌
📄 HEADLấy metadata✔️✔️
⚙️ OPTIONSXem method hỗ trợ✔️✔️
🔍 TRACEDebug phản hồi lại✔️✔️✔️
🔗 CONNECTTạo tunnel (proxy/SSL)

2. Phân tích chi tiết hành vi của từng phương thức HTTP

Hành vi vận hành của các phương thức trên không gian số được quy định rất nghiêm ngặt dựa trên cấu trúc dữ liệu trả về và trạng thái của máy chủ.

2.1. Phương thức GET

Phương thức này được sử dụng với mục đích duy nhất là lấy dữ liệu từ server. Vì vậy, đặc điểm cốt lõi của nó là hoàn toàn không làm thay đổi trạng thái hay biến động dữ liệu trên máy chủ (chỉ đọc). Hơn nữa, dữ liệu phản hồi từ lệnh này có thể được lưu trữ lại (cache). Hệ thống thường truyền các tham số truy vấn thông qua chuỗi truy vấn trên URL. Ví dụ cụ thể là lệnh GET /products sẽ dùng để lấy toàn bộ danh sách sản phẩm.

2.2. Phương thức POST

Ngược lại với lệnh trên, mục đích của phương thức này là gửi dữ liệu mới lên hệ thống để khởi tạo một resource hoàn toàn mới. Do đó, dữ liệu của request thường được đóng gói cẩn thận bên trong phần thân (Request Body) dưới các định dạng phổ biến như JSON, form-data, hoặc XML. Hành động này sẽ trực tiếp làm thay đổi trạng thái hoặc dữ liệu trên server. Ví dụ điển hình là lệnh POST /users dùng để tạo một tài khoản người dùng mới.

2.3. Phương thức PUT

Mục đích chính của lệnh này là cập nhật hoặc thay thế (replace) toàn bộ một resource hiện có trên hệ thống. Vì thế, đặc điểm của phương thức này là yêu cầu client phải gửi toàn bộ cấu hình dữ liệu mới để đè lên dữ liệu cũ. Tuy nhiên, đây là một phương thức có tính trùng lặp (Idempotent). Điều đó có nghĩa là dù người dùng có thực thi lệnh này nhiều lần liên tiếp với cùng một tập dữ liệu, kết quả cuối cùng trên server vẫn giữ nguyên như cũ. Ví dụ thực tế là lệnh PUT /users/123 giúp cập nhật toàn bộ thông tin của user có mã định danh 123.

2.4. Phương thức PATCH

Phương thức này được thiết kế để phục vụ cho nhu cầu cập nhật một phần dữ liệu (partial update) của resource. Điểm ưu việt của lệnh này là lập trình viên không cần gửi toàn bộ dữ liệu lên máy chủ, mà chỉ cần truyền đi phần thông tin có sự thay đổi. Mặt khác, tính chất Idempotent của phương thức này hoàn toàn phụ thuộc vào cách cài đặt logic của hệ thống. Ví dụ trực quan là lệnh PATCH /users/123 khi người dùng chỉ muốn thay đổi duy nhất địa chỉ email của user 123.

2.5. Phương thức DELETE

Mục đích cốt lõi của phương thức này là xóa bỏ hoàn toàn một resource cụ thể khỏi server. Sau khi thực thi thành công, hệ thống thường trả về mã trạng thái HTTP là 200 OK hoặc 204 No Content. Ngoài ra, đây cũng là một phương thức Idempotent, bởi vì hành vi xóa một bản ghi nhiều lần liên tiếp vẫn mang lại kết quả như một lần duy nhất. Ví dụ thực tế là lệnh DELETE /users/123 dùng để xóa tài khoản user 123.

2.6. Các phương thức hỗ trợ nâng cao (HEAD, OPTIONS, TRACE, CONNECT)

Bên cạnh các phương thức thao tác dữ liệu cơ bản, hệ thống API chuyên nghiệp còn vận hành dựa trên 4 công cụ hỗ trợ đặc thù sau:

  • Phương thức HEAD: Lệnh này giúp lấy thông tin Metadata của resource (phần header) mà hoàn toàn không cần lấy dữ liệu body. Ứng dụng thực tế của nó là kiểm tra xem tệp tin có tồn tại hay không, hoặc đo lường kích thước dung lượng tệp tin.
  • Phương thức OPTIONS: Mục đích của lệnh là kiểm tra xem server đang hỗ trợ những phương thức nào trên một resource cụ thể. Cơ chế này thường được ứng dụng tự động trong các yêu cầu CORS preflight request của trình duyệt.
  • Phương thức TRACE: Công cụ này được dùng cho mục đích gỡ lỗi (Debug) nhờ vào khả năng phản hồi lại nguyên văn request để client kiểm tra. Tuy nhiên, lệnh này rất ít khi được mở trên production vì các lý do an toàn bảo mật.
  • Phương thức CONNECT: Lệnh này dùng để thiết lập một kênh truyền TCP/IP trực tiếp đến server, phục vụ chủ yếu cho các kết nối mạng qua proxy hoặc thiết lập HTTPS tunneling bảo mật.

3. Tóm gọn phân loại các nhóm phương thức theo tiêu chuẩn kỹ thuật

Để quản trị rủi ro hệ thống tốt nhất, người làm kỹ thuật thường phân chia các phương thức HTTP thành các nhóm thuộc tính sau:

Non-idempotent methods (Nhóm không trùng lặp): Các lệnh có thể tạo ra các kết quả khác nhau hoặc sinh thêm dữ liệu mới sau mỗi lần gọi, điển hình là POSTPATCH (trong hầu hết các trường hợp cấu hình).

Safe methods (Nhóm phương thức an toàn): Các lệnh này tuyệt đối không làm thay đổi hay biến động dữ liệu trên server, bao gồm GET, HEAD, OPTIONS, và TRACE.

Idempotent methods (Nhóm phương thức trùng lặp): Các lệnh mà khi gọi nhiều lần liên tiếp với cùng một tham số vẫn không làm thay đổi kết quả hệ thống, bao gồm PUT, DELETE, GET, HEAD, OPTIONS, và TRACE.

Kết luận

Thiết kế một hệ thống giao tiếp chuẩn mực thông qua các phương thức truyền tin là bước khởi đầu bắt buộc của mọi dự án phần mềm. Do đó, bên cạnh việc phân định đúng vai trò của từng loại request, người làm kỹ thuật còn phải tối ưu hóa cấu trúc dữ liệu trả về (response) để đảm bảo tính đồng bộ tuyệt đối cho phía Client. Độc giả có thể đọc thêm bài viết phân tích sâu về sự khác biệt giữa [response json và resource] để nắm vững kỹ thuật đóng gói dữ liệu API chuyên nghiệp nhất.