API & Networking Cơ bản
Một API nội bộ gọi sai thì thường thấy stack trace ngay. Một API nhận dữ liệu từ hệ thống bên ngoài thì khó hơn: người gửi có chính sách retry riêng, response có thể mất trên đường về, và bất kỳ ai biết URL đều có thể gửi JSON giả.
Trang này là điểm bắt đầu để chọn đúng bài cần đọc. Danh sách đầy đủ nằm ở menu bên trái.
Chọn bài theo câu hỏi
Phần tiêu đề “Chọn bài theo câu hỏi”| Câu hỏi | Bài |
|---|---|
| Nhận request từ bên ngoài: tin được không, xử lý trùng chưa? | Webhook: chữ ký, retry, idempotency |
| API báo lỗi cho client thế nào để phân nhánh được? | Lỗi API với RFC 9457 |
| Một request đi nhiều hop còn bao nhiêu thời gian? | Timeout budget và deadline |
| Một client gửi quá nhiều request: chặn thế nào, trả lỗi gì? | Rate limiting cho API |
Client retry POST /orders sau timeout: làm sao không tạo hai đơn? |
Idempotency-Key |
| Static asset và response API sau CDN: cache bao lâu, revalidate thế nào, cái gì không bao giờ được cache? | HTTP caching |
Webhook
Phần tiêu đề “Webhook”Tách ba cơ chế hay bị gộp (chữ ký, idempotency, ACK), có handler mẫu verify-rồi-dedupe và bảng crash point. Điểm mấu chốt: xác minh trên raw body trước khi parse.
Lỗi API
Phần tiêu đề “Lỗi API”HTTP status nói lớp kết quả, type là mã loại lỗi ổn định, detail dành cho người đọc. Có ví dụ JSON đối chiếu giữa 200 {success:false} và 409 problem+json, cùng bảng status và hướng dẫn retry.
Thời gian
Phần tiêu đề “Thời gian”Timeout giới hạn một bước, deadline giới hạn cả request. Có waterfall 800 ms, bảng timeout hierarchy và cách nối AbortSignal trong Node.
Rate limiting
Phần tiêu đề “Rate limiting”Chọn thuật toán (fixed window, sliding window, token bucket), lưu trạng thái ở Redis bằng Lua atomic, trả 429 cùng Retry-After. Có demo cùng một burst qua hai thuật toán.
Liên quan
Phần tiêu đề “Liên quan”Retry và trạng thái không chắc chắn: tám ngộ nhận về hệ phân tán và retry, backoff, jitter. Xử lý trùng ở phía message: idempotent consumer và transactional outbox. Ranh giới xác thực ở trình duyệt: CORS và CSRF.