ETag & 304 Not Modified
GET · /api/practice/level4/cached-article · Nâng cao
Mô tả bài tập
Endpoint trả về một bài viết cố định kèm header ETag - một 'dấu vân tay' của nội dung hiện tại. Gọi lần đầu sẽ nhận 200 kèm body và header ETag. Gọi lại với header If-None-Match bằng đúng giá trị ETag vừa nhận, server sẽ trả 304 Not Modified và KHÔNG có body - báo cho client biết dữ liệu chưa đổi nên có thể dùng lại bản đã cache.
Mục tiêu học được
- Hiểu cơ chế caching bằng ETag/If-None-Match (conditional GET) - rất phổ biến trên API thật nhưng ít tester để ý
- Kiểm tra 304 Not Modified không có response body
- Nhận ra lợi ích: tiết kiệm băng thông khi dữ liệu không đổi
💡 Bài này hoàn thành khi bạn đã nhận cả 200 (lần đầu) và 304 (khi gửi đúng If-None-Match).
Lệnh curl
# 1. Gọi lần đầu, lấy ETag từ response header
curl -i "http://testing-api.systemhub.uk/api/practice/level4/cached-article" \
-H "X-Practice-Token: YOUR_TOKEN"
# 2. Gọi lại kèm If-None-Match đúng bằng ETag vừa nhận -> mong đợi 304
curl -i "http://testing-api.systemhub.uk/api/practice/level4/cached-article" \
-H "X-Practice-Token: YOUR_TOKEN" \
-H 'If-None-Match: "<etag-vua-nhan>"'
Các bước làm trên Postman
- GET http://testing-api.systemhub.uk/api/practice/level4/cached-article, kiểm tra status 200, xem header ETag trong response
- Copy giá trị ETag (bao gồm cả dấu ngoặc kép)
- Gửi lại request, thêm header If-None-Match với giá trị ETag vừa copy
- Kiểm tra status 304 và response không có body
Đăng nhập để lệnh curl ở trên tự động điền sẵn Practice Token thật của bạn.
🧪 Thử nghiệm trực tiếp
Gọi API ngay tại đây. Nếu bạn đã đăng nhập, tiến độ sẽ được ghi nhận tự động khi gọi đúng như kỳ vọng của bài.
Kết quả
Status: