HTTP vừa có phương thức mới đầu tiên sau 20 năm

Có lẽ bạn đã từng làm điều này trước đây.

Bạn cần tìm kiếm sản phẩm. Các bộ lọc tìm kiếm của bạn quá lớn để có thể đưa vào một URL. Để khắc phục điều này, bạn sử dụng một yêu cầu POST.

Nó hoạt động. Nhưng đó là một lời nói dối. Bạn đang báo với HTTP rằng bạn đang thay đổi dữ liệu trong khi thực tế bạn chỉ đang đọc nó.

Vào tháng 6 năm 2026, IETF đã công bố RFC 10008. Nó định nghĩa một phương thức HTTP mới gọi là QUERY. Đây là phương thức mới đầu tiên sau hơn hai thập kỷ. Nó giải quyết chính xác vấn đề đã đề cập ở trên.

Vấn đề hiện tại

GET rất tuyệt để đọc dữ liệu. Nó an toàn và có thể lưu bộ nhớ đệm (cacheable). Nhưng nó không thể mang theo thân yêu cầu (request body). Các URL cũng có giới hạn về số lượng ký tự.

POST có thể mang theo một body. Nhưng HTTP mặc định rằng POST làm thay đổi trạng thái. Điều này có nghĩa là bạn sẽ mất khả năng tự động lưu cache và thực hiện thử lại (retry) một cách an toàn. Nếu một yêu cầu POST bị hết thời gian chờ (timeout), bạn không thể chỉ đơn giản là thử lại. Bạn không biết liệu máy chủ đã thay đổi thứ gì đó hay chưa.

Giải pháp: QUERY

QUERY là một yêu cầu GET có kèm theo body. Nó cung cấp hai sự đảm bảo:

  • Nó an toàn. Nó không sửa đổi dữ liệu.
  • Nó có tính idempotent (lũy đẳng). Gửi nó hai lần cũng cho kết quả giống như gửi một lần.

Cách sử dụng ngay hôm nay

Bạn có thể sử dụng điều này ngay bây giờ với Axios hoặc Fetch.

Ví dụ với Axios:

axios.request({
  method: 'QUERY',
  url: '/api/products',
  data: { category: 'shoes', maxPrice: 100 }
})

Ví dụ với Fetch:

fetch('/api/products', {
  method: 'QUERY',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ category: 'shoes', maxPrice: 100 })
})

Những gì sắp tới

Quá trình chuyển đổi sẽ không diễn ra trong một sớm một chiều. Dưới đây là lộ trình:

  • Cơ sở hạ tầng: Nginx và Apache sẽ chuyển tiếp các yêu cầu này. Bạn có thể cần cập nhật WAF hoặc các quy tắc bảo mật để cho phép phương thức QUERY.
  • Frameworks: Dự kiến Spring, Rails và Express sẽ bổ sung hỗ trợ gốc (native support) trong suốt năm 2026 và 2027.
  • CDNs: Vì các kỹ sư từ Cloudflare và Akamai đã tham gia viết tài liệu này, hãy mong đợi sự hỗ trợ nhanh chóng từ các CDN. Điều này giúp việc lưu cache trở nên dễ dàng hơn nhiều.

Tại sao điều này lại quan trọng đối với mã nguồn của bạn

  1. Thử lại tự động: Vì QUERY có tính idempotent, các ứng dụng di động và client có thể thử lại các yêu cầu thất bại một cách an toàn.
  2. Lưu cache tốt hơn: Các CDN có thể lưu cache các phản hồi QUERY dựa trên body. Bạn có thể xóa bỏ các lớp cache Redis tự xây dựng (hand-rolled).
  3. URL sạch hơn: Bạn không còn cần phải nhồi nhét các JSON phức tạp vào các tham số truy vấn (query parameters) của URL nữa.
  4. API có tính ngữ nghĩa (Semantic): Tài liệu API của bạn sẽ trở nên rõ ràng hơn. Các nhà phát triển sẽ biết chính xác endpoint nào dùng để đọc dữ liệu và endpoint nào dùng để ghi dữ liệu.

Hãy chuẩn bị cho đội ngũ của bạn bằng cách kiểm tra (audit) các endpoint POST hiện tại. Hãy xác định xem endpoint nào chỉ dùng để đọc dữ liệu. Đó chính là các endpoint QUERY trong tương lai của bạn.

Nguồn: https://dev.to/andresclua/http-just-got-its-first-new-method-in-20-years-heres-why-you-should-care-2h5p