API là gì? Hướng dẫn toàn diện từ cơ bản đến nâng cao cho lập trình viên
API là gì? Khái niệm cơ bản về Application Programming Interface#
API (Application Programming Interface) là giao diện lập trình ứng dụng - một tập hợp các quy tắc, giao thức và công cụ cho phép các ứng dụng phần mềm giao tiếp với nhau. Nói một cách đơn giản, API hoạt động như một cầu nối, cho phép các hệ thống khác nhau trao đổi dữ liệu và chức năng mà không cần biết chi tiết bên trong của nhau.
Tại sao API quan trọng trong phát triển phần mềm?#
API đóng vai trò thiết yếu trong kiến trúc phần mềm hiện đại vì:
Tăng tốc độ phát triển: Tái sử dụng các dịch vụ có sẵn thay vì xây dựng từ đầu
Tích hợp dễ dàng: Kết nối các hệ thống và ứng dụng khác nhau
Bảo mật tốt hơn: Kiểm soát quyền truy cập và bảo vệ dữ liệu nhạy cảm
Mở rộng linh hoạt: Phát triển và nâng cấp các thành phần độc lập
Các loại API phổ biến#
REST API: Sử dụng giao thức HTTP, dễ hiểu và triển khai, phù hợp cho web services.
SOAP API: Giao thức nghiêm ngặt với cấu trúc XML, thường dùng trong môi trường doanh nghiệp.
GraphQL API: Cho phép client yêu cầu chính xác dữ liệu cần thiết, giảm over-fetching.
WebSocket API: Hỗ trợ giao tiếp hai chiều real-time giữa client và server.
Top 100 câu hỏi về API thường gặp nhất#
Câu hỏi cơ bản về API (1-20)#
API là gì và nó hoạt động như thế nào? API là giao diện cho phép các ứng dụng giao tiếp thông qua các request và response theo định dạng chuẩn.
Sự khác biệt giữa API và Web Service? Web Service là một loại API sử dụng giao thức mạng, nhưng không phải API nào cũng là Web Service.
REST API là gì? REST (Representational State Transfer) là kiến trúc API sử dụng HTTP methods và stateless communication.
HTTP methods trong API là gì? GET (lấy dữ liệu), POST (tạo mới), PUT (cập nhật toàn bộ), PATCH (cập nhật một phần), DELETE (xóa).
Endpoint trong API là gì? Endpoint là URL cụ thể nơi API có thể được truy cập để thực hiện một chức năng nhất định.
JSON là gì và tại sao nó phổ biến trong API? JSON (JavaScript Object Notation) là định dạng dữ liệu nhẹ, dễ đọc và phân tích cú pháp.
Authentication trong API là gì? Là quá trình xác thực danh tính người dùng hoặc ứng dụng trước khi cho phép truy cập API.
Authorization khác Authentication như thế nào? Authentication xác định "bạn là ai", Authorization xác định "bạn được phép làm gì".
API Key là gì? Là mã định danh duy nhất được sử dụng để xác thực requests đến API.
Rate limiting trong API là gì? Là giới hạn số lượng requests một client có thể thực hiện trong khoảng thời gian nhất định.
Câu hỏi về REST API (21-40)#
RESTful API cần tuân thủ những nguyên tắc nào? Stateless, client-server architecture, cacheable, uniform interface, layered system.
Status code trong API nghĩa là gì? Mã số báo hiệu kết quả của request: 2xx (thành công), 3xx (redirect), 4xx (lỗi client), 5xx (lỗi server).
Sự khác biệt giữa PUT và PATCH? PUT thay thế toàn bộ resource, PATCH chỉ cập nhật các trường được chỉ định.
CRUD operations trong API là gì? Create (POST), Read (GET), Update (PUT/PATCH), Delete (DELETE).
Query parameters và path parameters khác nhau như thế nào? Path parameters là phần của URL path, query parameters được thêm sau dấu "?" để lọc/sắp xếp.
Idempotent trong API nghĩa là gì? Một request là idempotent nếu gọi nhiều lần cho kết quả giống gọi một lần.
HATEOAS là gì? Hypermedia As The Engine Of Application State - nguyên tắc REST cung cấp links để navigate API.
Versioning API là gì và tại sao cần thiết? Là cách quản lý các phiên bản API khác nhau để đảm bảo backward compatibility.
Content negotiation trong API là gì? Cho phép client và server thỏa thuận định dạng dữ liệu (JSON, XML) thông qua headers.
Stateless trong REST API nghĩa là gì? Server không lưu trữ state của client, mỗi request phải chứa đầy đủ thông tin cần thiết.
Câu hỏi về bảo mật API (41-60)#
OAuth 2.0 là gì? Là framework authorization cho phép ứng dụng truy cập tài nguyên thay mặt người dùng mà không cần mật khẩu.
JWT (JSON Web Token) hoạt động như thế nào? JWT chứa thông tin được mã hóa và ký số, dùng để xác thực và truyền thông tin an toàn.
CORS là gì và tại sao quan trọng? Cross-Origin Resource Sharing cho phép hoặc hạn chế tài nguyên được truy cập từ domain khác.
API Gateway là gì? Là điểm vào duy nhất cho tất cả API requests, xử lý routing, authentication, rate limiting.
HTTPS quan trọng như thế nào cho API? HTTPS mã hóa dữ liệu truyền tải, bảo vệ khỏi man-in-the-middle attacks.
SQL Injection trong API là gì? Là kỹ thuật tấn công bằng cách chèn mã SQL độc hại vào API requests.
Input validation trong API là gì? Là quá trình kiểm tra và làm sạch dữ liệu đầu vào để ngăn chặn tấn công.
API throttling là gì? Là kỹ thuật kiểm soát tốc độ requests để bảo vệ server khỏi quá tải.
Bearer token là gì? Là loại access token được gửi trong Authorization header để xác thực requests.
Refresh token khác access token như thế nào? Access token có thời gian sống ngắn, refresh token dùng để lấy access token mới mà không cần đăng nhập lại.
Câu hỏi về GraphQL (61-80)#
GraphQL khác REST API như thế nào? GraphQL cho phép client chỉ định chính xác dữ liệu cần thiết, REST trả về cấu trúc cố định.
Schema trong GraphQL là gì? Schema định nghĩa types, queries, mutations và relationships giữa dữ liệu.
Query và Mutation trong GraphQL khác nhau ra sao? Query dùng để đọc dữ liệu, Mutation dùng để thay đổi dữ liệu.
Resolver trong GraphQL là gì? Resolver là hàm xử lý logic để fetch hoặc compute dữ liệu cho từng field.
Over-fetching và Under-fetching là gì? Over-fetching: nhận thừa dữ liệu. Under-fetching: cần nhiều requests để lấy đủ dữ liệu.
Câu hỏi về Testing API (81-100)#
Integration testing cho API là gì? Kiểm tra tương tác giữa các components và external services.
Postman được dùng để làm gì? Tool phổ biến để test, document và monitor APIs.
Contract testing trong API là gì? Đảm bảo API provider và consumer tuân thủ cùng một contract đã thỏa thuận.
Mock API là gì? Là phiên bản giả lập của API dùng cho testing và development.
Load testing API quan trọng như thế nào? Kiểm tra hiệu suất API dưới tải cao để đảm bảo khả năng mở rộng.
[Tiếp tục với 60 câu hỏi còn lại về monitoring, documentation, microservices, webhooks, caching, performance optimization...]
API documentation quan trọng ra sao? Documentation giúp developers hiểu cách sử dụng API, giảm support requests.
Swagger/OpenAPI là gì? Là specification để mô tả RESTful APIs với công cụ tự động generate documentation.
Webhooks khác API như thế nào? Webhooks là event-driven (push), API thường là request-driven (pull).
Pagination trong API là gì? Chia dữ liệu lớn thành nhiều trang nhỏ để cải thiện performance.
Caching trong API hoạt động ra sao? Lưu trữ tạm thời response để giảm load server và tăng tốc độ response.
ETag trong HTTP là gì? Identifier cho phiên bản cụ thể của resource, dùng cho conditional requests.
Circuit breaker pattern trong API là gì? Ngăn chặn cascading failures bằng cách tạm dừng requests đến service lỗi.
API rate limit thường được set như thế nào? Dựa vào user tier, endpoint sensitivity, và infrastructure capacity.
Microservices architecture ảnh hưởng đến API như thế nào? Mỗi service có API riêng, cần API gateway để quản lý và route requests.
Service mesh là gì? Infrastructure layer quản lý service-to-service communication trong microservices.
API versioning strategies nào phổ biến? URI versioning, header versioning, query parameter versioning.
Deprecation policy cho API là gì? Kế hoạch thông báo và loại bỏ các API versions cũ một cách có kiểm soát.
Batch requests trong API là gì? Gom nhiều requests vào một call duy nhất để giảm network overhead.
Long polling vs WebSocket? Long polling giữ connection mở chờ data, WebSocket là full-duplex real-time communication.
API proxy là gì? Trung gian giữa client và server, có thể thêm security, caching, logging.
BFF (Backend for Frontend) pattern là gì? Tạo API riêng biệt cho từng loại client (web, mobile) để tối ưu hóa.
API composition là gì? Kết hợp responses từ nhiều APIs thành một response duy nhất.
Idempotency key là gì? Unique identifier đảm bảo request chỉ được xử lý một lần dù gửi nhiều lần.
API monitoring cần track những metrics nào? Response time, error rate, throughput, availability, latency.
Blue-green deployment cho API là gì? Chạy đồng thời hai versions, chuyển đổi traffic khi version mới ổn định.
Canary deployment trong API là gì? Release version mới cho một nhóm nhỏ users trước khi rollout toàn bộ.
API health check endpoint là gì? Endpoint đặc biệt báo cáo trạng thái hoạt động của API service.
Request/Response logging nên bao gồm gì? Timestamp, user ID, endpoint, status code, response time, error messages.
Compression trong API response làm gì? Giảm kích thước payload bằng gzip/brotli để tăng tốc transfer.
Hypermedia controls trong API là gì? Links và actions được nhúng trong response để guide client behavior.
Content-Type header quan trọng ra sao? Chỉ định định dạng dữ liệu được gửi, giúp server/client parse đúng.
API sandbox environment là gì? Môi trường testing tách biệt để developers thử nghiệm mà không ảnh hưởng production.
Partial response trong API là gì? Cho phép client chỉ định fields cụ thể cần trả về để giảm payload.
ETL và API có liên quan gì? APIs thường được dùng để extract data trong ETL pipelines.
Serverless và API integration ra sao? API Gateway triggers serverless functions (Lambda, Cloud Functions) on-demand.
gRPC khác REST API như thế nào? gRPC sử dụng Protocol Buffers, HTTP/2, nhanh hơn và hiệu quả hơn cho inter-service communication.
API federation là gì? Kết hợp nhiều APIs thành một unified interface cho clients.
Schema validation trong API là gì? Kiểm tra request/response tuân thủ schema đã định nghĩa trước khi xử lý.
API analytics thu thập những insights gì? Usage patterns, popular endpoints, user demographics, performance bottlenecks.
Middleware trong API là gì? Functions xử lý request/response trước khi đến route handlers (auth, logging, validation).
API rate limit strategies phổ biến? Token bucket, leaky bucket, fixed window, sliding window.
Mutual TLS (mTLS) trong API là gì? Cả client và server xác thực lẫn nhau bằng certificates.
API payload encryption là gì? Mã hóa request/response body ngoài HTTPS transport encryption.
Webhook security best practices? Signature verification, IP whitelisting, HTTPS only, idempotency.
API deprecation header là gì? HTTP header thông báo endpoint sắp bị loại bỏ và thời gian còn lại.
Consumer-driven contracts là gì? Consumers định nghĩa expectations, providers phải tuân thủ contracts này.
API marketplace là gì? Platform discover, integrate và monetize APIs từ nhiều providers.
Synthetic monitoring cho API là gì? Automated tests liên tục kiểm tra API availability và performance từ nhiều locations.
API error handling best practices? Consistent error format, meaningful messages, proper status codes, detailed logging.
Asynchronous API patterns nào tồn tại? Callbacks, webhooks, long polling, server-sent events, WebSockets.
API request signing là gì? Tạo signature từ request data để verify integrity và authenticity.
Scope trong OAuth là gì? Permissions granular xác định access token có quyền gì.
API backward compatibility đạt được như thế nào? Optional fields, additive changes only, maintain old endpoints, clear versioning.
Bulkhead pattern trong APIs là gì? Cách ly resources để failures trong một component không ảnh hưởng toàn bộ system.
API orchestration vs choreography? Orchestration: central controller điều phối. Choreography: services tự phối hợp dựa trên events.
API specification formats phổ biến? OpenAPI (Swagger), RAML, API Blueprint, GraphQL Schema.
Retry logic trong API clients nên như thế nào? Exponential backoff, max retry attempts, idempotent requests only.
API timeout settings cần cân nhắc gì? Network latency, processing time, client experience, resource management.
Streaming APIs hoạt động ra sao? Server gửi data continuously qua persistent connection thay vì single response.
API change management process là gì? Workflow review, approve, communicate và deploy API changes safely.
Multi-tenancy trong APIs như thế nào? Một API instance phục vụ nhiều tenants với data isolation.
API security testing bao gồm gì? Penetration testing, vulnerability scanning, authentication/authorization testing.
Field-level encryption trong APIs là gì? Encrypt specific sensitive fields thay vì toàn bộ payload.
API governance framework bao gồm gì? Standards, policies, lifecycle management, security requirements.
API observability khác monitoring như thế nào? Monitoring tracks metrics, observability hiểu "why" through logs, traces, metrics.
Top 10 câu hỏi phỏng vấn về API và cách trả lời xuất sắc#
1. Giải thích REST API và các ràng buộc RESTful#
Câu trả lời mẫu: REST (Representational State Transfer) là architectural style cho distributed systems. Các ràng buộc RESTful bao gồm:
Client-Server: Tách biệt concerns, client xử lý UI, server xử lý data
Stateless: Mỗi request độc lập, chứa đầy đủ thông tin cần thiết
Cacheable: Responses phải khai báo cacheable hay không
Uniform Interface: Standardized communication qua HTTP methods
Layered System: Client không biết connect trực tiếp server hay qua intermediaries
Code on Demand (optional): Server có thể extend client functionality
2. Phân biệt PUT và PATCH methods#
Câu trả lời mẫu: PUT dùng để thay thế hoàn toàn một resource, yêu cầu gửi toàn bộ representation. PATCH dùng để cập nhật một phần resource, chỉ gửi các fields cần thay đổi.
Ví dụ: Để update email của user, PUT cần gửi full user object (name, email, age...), còn PATCH chỉ cần {"email": "new@email.com"}. PUT là idempotent, PATCH có thể không idempotent tùy implementation.
3. Làm thế nào để bảo mật API?#
Câu trả lời mẫu: Tôi áp dụng security theo nhiều layers:
Authentication: Implement OAuth 2.0 hoặc JWT cho identity verification
Authorization: Role-based access control (RBAC) cho permissions
Encryption: HTTPS mandatory cho all endpoints, encrypt sensitive data at rest
Input Validation: Sanitize và validate mọi inputs để prevent injection attacks
Rate Limiting: Protect khỏi DDoS và brute force attacks
API Keys/Tokens: Rotate regularly, store securely
CORS Policy: Restrict allowed origins
Security Headers: Implement CSP, HSTS, X-Frame-Options
Logging & Monitoring: Track suspicious activities và security events
4. Giải thích cách implement pagination trong API#
Câu trả lời mẫu: Có ba approaches phổ biến:
Offset-based pagination:
GET /api/users?limit=20&offset=40
Đơn giản nhưng performance kém với large datasets và có thể skip/duplicate records.
Cursor-based pagination:
GET /api/users?limit=20&cursor=eyJpZCI6MTAwfQ==
Consistent results, performance tốt hơn, nhưng không thể jump to arbitrary pages.
Page-based pagination:
GET /api/users?page=3&per_page=20
User-friendly, dễ implement navigation UI.
Tôi thường chọn cursor-based cho feeds/streams và page-based cho admin interfaces.
5. Xử lý API versioning như thế nào?#
Câu trả lời mẫu: Có nhiều strategies:
URI Versioning: /api/v1/users - Rõ ràng, dễ route nhưng có thể duplicate code
Header Versioning: Accept: application/vnd.company.v1+json - Cleaner URLs nhưng less visible
Query Parameter: /api/users?version=1 - Flexible nhưng có thể conflict với other params
Tôi prefer URI versioning vì transparency và ease of testing. Quan trọng là maintain backward compatibility, deprecate versions gradually với clear timeline, và document migration paths chi tiết.
6. HTTP status codes quan trọng và khi nào dùng?#
Câu trả lời mẫu:
200 OK: Successful GET, PUT, PATCH hoặc DELETE
201 Created: Successful POST tạo resource mới
204 No Content: Successful request không cần return data
400 Bad Request: Invalid syntax hoặc validation errors
401 Unauthorized: Missing hoặc invalid authentication
403 Forbidden: Authenticated nhưng không có permission
404 Not Found: Resource không tồn tại
409 Conflict: Request conflicts với current state (duplicate entry)
429 Too Many Requests: Rate limit exceeded
500 Internal Server Error: Unhandled server error
503 Service Unavailable: Temporary downtime hoặc maintenance
7. Thiết kế API để handle concurrent requests và race conditions#
Câu trả lời mẫu: Tôi sử dụng nhiều techniques:
Optimistic Locking: Sử dụng version numbers hoặc ETags. Client gửi current version, server chỉ update nếu version matches.
Pessimistic Locking: Lock resource trong transaction, nhưng có thể cause bottlenecks.
Idempotency Keys: Client gửi unique key, server track processed keys để avoid duplicate operations.
Database Transactions: ACID properties đảm bảo consistency cho related operations.
Message Queues: Serialize concurrent requests cho sensitive operations.
Ví dụ cho payment API, tôi combine idempotency keys với database transactions để guarantee exactly-once processing.
8. Giải thích caching strategies cho APIs#
Câu trả lời mẫu: Caching giảm latency và server load:
Client-side caching: Browser cache dựa trên Cache-Control, ETag, Last-Modified headers.
CDN caching: Distribute static hoặc rarely-changing content globally.
Application-level caching: Redis/Memcached cache computed results, database queries.
HTTP caching directives:
Cache-Control: public, max-age=3600cho public dataCache-Control: private, max-age=300cho user-specific dataCache-Control: no-storecho sensitive data
Cache invalidation: Implement strategies như TTL, event-based invalidation, hoặc cache-aside pattern. Remember: "There are only two hard things in Computer Science: cache invalidation and naming things."
9. Xử lý errors và exceptions trong API như thế nào?#
Câu trả lời mẫu: Consistent error handling structure:
{ "error": { "code": "VALIDATION_ERROR", "message": "Invalid input data", "details": [ { "field": "email", "issue": "Invalid email format" } ], "request_id": "req_abc123" } }
Best practices tôi follow:
Use appropriate HTTP status codes
Provide machine-readable error codes cho programmatic handling
Include human-readable messages
Add detailed field-level errors cho validation
Include request_id để tracing và debugging
Log errors với sufficient context nhưng không expose sensitive data
Document possible errors trong API documentation
Implement global exception handlers để catch unhandled errors
10. Thiết kế API cho microservices architecture#
Câu trả lời mẫu: Trong microservices, API design critical cho service communication:
API Gateway Pattern: Single entry point route requests đến appropriate services, handle cross-cutting concerns (auth, rate limiting, logging).
Service-to-Service Communication:
Synchronous: REST/gRPC cho immediate responses
Asynchronous: Message queues (RabbitMQ, Kafka) cho loosely coupled communication
API Composition: Aggregate data từ multiple services, careful về performance implications.
Contract Testing: Ensure provider và consumer agree on API contracts, prevent breaking changes.
Circuit Breaker Pattern: Prevent cascading failures khi một service down.
Service Discovery: Dynamic routing đến healthy service instances.
Backward Compatibility: Critical vì services deploy independently với different schedules.
1 phản hồi
Bài liên quan trong #Học Lập Trình
-
Mẹo dùng claude code desktop với dự án lớn
minhdev -
Hướng dẫn cài docker trên ubuntu 24
minhdev -
Hướng dẫn đầy đủ về cách cài và dùng Claude trên PC, kèm các mẹo hay!
minhdev · 💬 1 -
Cách xây dựng API cho CMS bằng Java từ A-Z
minhdev · 💬 1 -
Dể xây dựng phần mềm quản lý tài sản cho 1 doanh nghiệp ta cần làm gì
minhdev