Request Body là gì?
Request Body là phần nội dung dữ liệu mà client gửi đến server trong HTTP request, thường dùng để truyền thông tin cần xử lý như tạo hoặc cập nhật tài nguyên. Phần này chỉ xuất hiện trong các phương thức như POST, PUT, PATCH, không có trong GET vì GET chỉ lấy dữ liệu. Dữ liệu trong Request Body thường ở định dạng JSON, XML hoặc form data, được chỉ định qua header Content-Type.
Vai trò của Request Body trong luồng dữ liệu
Request Body đóng vai trò trung tâm trong việc truyền dữ liệu từ client đến server, giúp thực hiện các thao tác thay đổi tài nguyên như tạo mới hoặc cập nhật. Trong automation workflow, nó cung cấp input cho các node xử lý API, kết nối với Data Mapping hoặc Data Transformation để chuẩn bị payload phù hợp. Không có Request Body, các phương thức tạo dữ liệu sẽ không thể truyền thông tin chi tiết, dẫn đến thất bại trong tích hợp hệ thống.
Request Body được dùng như thế nào trong thực tế?
Trong workflow automation như n8n hoặc các công cụ tương tự, Request Body được cấu hình trong node HTTP Request để gửi dữ liệu đến API endpoint. Server sẽ parse nội dung dựa trên Content-Type: application/json và map vào model như Pydantic trong FastAPI. Ví dụ, khi tạo item mới:
“` POST /items/ Content-Type: application/json
{ “name”: “Sản phẩm A”, “price”: 100.0, “description”: “Mô tả” } “`
FastAPI tự nhận diện tham số Pydantic từ Request Body, tách biệt với path parameter hoặc query parameter. Bạn cũng có thể kết hợp cả ba: path như /items/{item_id}, query như ?q=search, và body chứa object phức tạp.
Các bước sử dụng phổ biến bao gồm:
- Xác định schema dữ liệu (ví dụ: JSON object với các field required).
- Set header
Content-Typephù hợp, tránh lỗi415 Unsupported Media Type. - Sử dụng công cụ như curl hoặc Postman để test:
“ curl -X POST "https://api.example.com/items/" -H "Content-Type: application/json" -d '{"name": "Test", "price": 50}' “
Những lỗi hoặc hiểu sai phổ biến về Request Body
Nhiều người nhầm lẫn Request Body với Query Parameter hoặc Path Parameter, dẫn đến gửi dữ liệu sai vị trí và nhận HTTP 400 Bad Request. Lỗi phổ biến là quên set Content-Type, khiến server không parse được JSON, trả về 415. Một sai lầm khác là gửi Request Body trong GET request, vì GET không hỗ trợ body theo chuẩn HTTP.
Các vấn đề thường gặp:
- Dữ liệu vượt kích thước giới hạn server, gây 413 Payload Too Large.
- Không escape ký tự đặc biệt trong JSON, dẫn đến parse error.
- Bỏ qua validation schema, server reject với 422 Unprocessable Entity.
Để tránh, luôn kiểm tra API docs về required fields và format hỗ trợ.
Các thuật ngữ liên quan đến Request Body
Dưới đây là một số thuật ngữ thường liên kết trực tiếp với Request Body trong automation và API integration:
- Content-Type: Header chỉ định định dạng dữ liệu trong body như
application/jsonhoặcapplication/x-www-form-urlencoded. - Payload: Nội dung thực tế của Request Body, thường là JSON object chứa dữ liệu cần xử lý.
- Pydantic Model: Schema validation trong FastAPI để parse và kiểm tra Request Body tự động.
- Data Mapping: Quá trình ánh xạ dữ liệu từ input workflow vào Request Body đúng cấu trúc.
Các câu hỏi thường gặp
Request Body khác gì Response Body?
Response Body là dữ liệu server trả về cho client, trong khi Request Body là dữ liệu client gửi đi. Request Body dùng cho POST/PUT để tạo/cập nhật, còn Response Body chứa kết quả hoặc lỗi ở mọi method.
Có gửi Request Body trong GET request được không?
Không nên gửi Request Body trong GET vì chuẩn HTTP không hỗ trợ, server thường bỏ qua hoặc reject. Dùng Query Parameter thay thế cho dữ liệu filter trong GET.
Làm sao biết server chấp nhận Request Body định dạng nào?
Kiểm tra header Accept từ docs hoặc test với Content-Type: application/json phổ biến nhất. Nếu lỗi 415, thử application/xml hoặc multipart/form-data tùy API.
Điều gì xảy ra nếu Request Body quá lớn?
Server thường trả 413 Payload Too Large, tùy giới hạn như 1MB hoặc 10MB. Giảm kích thước dữ liệu hoặc dùng compression header Content-Encoding: gzip để khắc phục.