Accept Header là gì?
Accept Header là một request header trong giao thức HTTP, dùng để chỉ định các loại nội dung (MIME types) mà client có thể hiểu và chấp nhận từ server. Header này hỗ trợ content negotiation, giúp server chọn định dạng phản hồi phù hợp nhất dựa trên ưu tiên của client. Cú pháp cơ bản: Accept: <MIME_type>/<MIME_subtype>, có thể liệt kê nhiều loại với chất lượng factor q từ 0 đến 1.
Vai trò của Accept Header trong tích hợp hệ thống
Accept Header đóng vai trò quan trọng trong tích hợp hệ thống automation và workflow bằng cách đảm bảo dữ liệu nhận được đúng định dạng mong muốn. Trong workflow, nó giúp node xử lý request/response khớp với data format cần thiết, tránh lỗi parsing dữ liệu không tương thích. Server sử dụng Accept Header kết hợp với Content-Type response header để thương lượng nội dung, tối ưu hóa luồng dữ liệu giữa các API.
Accept Header hoạt động như thế nào trong thực tế?
Accept Header được gửi trong HTTP request từ client (như browser, automation tool hoặc n8n node) để thông báo các MIME types ưu tiên. Server kiểm tra Accept Header, so sánh với khả năng hỗ trợ của mình, rồi chọn loại phù hợp và trả về với Content-Type tương ứng. Ví dụ, trong automation workflow gọi API:
- Request với
Accept: application/jsonsẽ nhận JSON nếu server hỗ trợ, thay vì HTML mặc định. Accept: text/html,application/json;q=0.9,/;q=0.8ưu tiên HTML, fallback sang JSON hoặc bất kỳ loại nào.
Trong công cụ như curl hoặc n8n HTTP Request node, đặt Accept Header giúp kiểm soát output data cho các bước sau như data mapping hoặc JSON parsing.
Các ví dụ phổ biến trong workflow bao gồm:
- Browser mặc định:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 - API call JSON:
Accept: application/json→ ResponseContent-Type: application/json - Hỗ trợ nhiều loại:
Accept: application/json, text/plain;q=0.5→ Server chọn JSON nếu có
Những lưu ý quan trọng về Accept Header
Không đặt Accept Header có thể dẫn đến server trả dữ liệu mặc định (thường HTML), gây lỗi trong automation khi mong đợi JSON hoặc XML. Server có thể từ chối nếu không khớp (HTTP 406 Not Acceptable), nên luôn kiểm tra API docs về MIME types hỗ trợ. Trong workflow dài, kết hợp Accept Header với Accept-Encoding (gzip) để tối ưu performance, nhưng tránh lạm dụng q-factor phức tạp gây nhầm lẫn.
Các lỗi phổ biến cần tránh:
- Bỏ qua charset:
Accept: application/json; charset=utf-8để tránh encoding mismatch - Không test fallback:
/chấp nhận mọi loại nhưng khó debug data format - Quên trong POST/PUT: Accept Header vẫn cần thiết cho response body
Các thuật ngữ liên quan đến Accept Header
Accept Header thường kết nối với các entity cốt lõi trong HTTP và workflow integration. Dưới đây là 4 thuật ngữ liên quan chính:
- Content-Type: Header chỉ định MIME type thực tế của response body, được server chọn dựa trên Accept.
- MIME type: Chuẩn định dạng dữ liệu như
application/jsonhoặctext/html, dùng trong Accept để thương lượng nội dung. - Content Negotiation: Quá trình server chọn content type phù hợp từ Accept Header của client.
- HTTP Request Header: Nhóm header trong request bao gồm Accept, dùng để cung cấp metadata cho server.
Các câu hỏi thường gặp
Accept Header khác Content-Type như thế nào?
Accept Header là request header từ client chỉ định loại nội dung mong muốn, trong khi Content-Type là response header từ server xác nhận loại nội dung thực tế. Hai header này phối hợp trong content negotiation để đảm bảo dữ liệu khớp định dạng. Ví dụ: Client gửi Accept: application/json, server trả Content-Type: application/json.
Làm thế nào để test Accept Header trong workflow?
Sử dụng công cụ như curl (curl -H "Accept: application/json" URL) hoặc n8n HTTP node để gửi request và kiểm tra response. Kiểm tra HTTP status code (200 OK hoặc 406) và Content-Type để xác nhận. Test nhiều MIME types để đảm bảo fallback hoạt động đúng trong automation.
Accept Header có bắt buộc trong API call không?
Không bắt buộc, nhưng khuyến nghị để tránh nhận dữ liệu không mong muốn như HTML thay vì JSON. Browser tự thêm mặc định, nhưng trong script/automation phải set thủ công. Bỏ qua có thể gây lỗi parsing ở node sau.
Accept Header ảnh hưởng đến performance workflow như thế nào?
Nó giúp server gửi định dạng nhẹ (JSON thay vì HTML lớn), giảm bandwidth và parsing time trong workflow. Kết hợp với Accept-Encoding: gzip tăng tốc độ hơn nữa. Sai định dạng làm workflow chậm do error handling thêm.