Quay lại

HIểu về API Gateway và các thành phần cốt lõi Chuyên mục Devops    2025-08-18    0 Lượt xem    0 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Chào mừng các bạn đến với một chủ đề cốt lõi trong phát triển web hiện đại: Amazon API Gateway. Nếu bạn đang xây dựng các dịch vụ microservices, ứng dụng web, hay mobile, việc nắm vững API Gateway là chìa khóa để tạo ra những hệ thống mạnh mẽ, an toàn và dễ quản lý.

Trong bài viết này, chúng ta sẽ đi sâu vào 5 thành phần quan trọng nhất của API Gateway và cách giải quyết một trong những vấn đề phổ biến nhất: lỗi CORS.


API Gateway: Cánh cổng an toàn và thông minh của bạn

Hãy hình dung API Gateway như một "nhân viên lễ tân" chuyên nghiệp đứng trước tất cả các dịch vụ backend của bạn. Mỗi khi một yêu cầu (request) từ bên ngoài muốn truy cập vào hệ thống, nó sẽ đi qua "lễ tân" này trước. Điều này mang lại nhiều lợi ích to lớn:

  • Quản lý tập trung: Thay vì phải quản lý từng API riêng lẻ, bạn có thể quản lý tất cả tại một nơi duy nhất.

  • Bảo mật: API Gateway có thể xác thực, phân quyền và giới hạn tốc độ truy cập (rate limiting), bảo vệ backend của bạn khỏi các cuộc tấn công.

  • Giám sát: Nó cung cấp các công cụ ghi log, theo dõi hiệu suất và tìm lỗi, giúp bạn dễ dàng theo dõi tình trạng của hệ thống.

  • Tương thích: Nó có thể biến đổi các yêu cầu và phản hồi, đảm bảo chúng luôn tương thích với backend, dù client gửi request với định dạng nào.


5 thành phần cốt lõi của API Gateway

Để tạo ra một API hoàn chỉnh trên API Gateway, bạn cần nắm vững 5 thành phần sau:

1. Method Request - Cổng vào của API

Đây là bước đầu tiên khi một request đến API Gateway. Method Request định nghĩa cách client tương tác với API của bạn. Tại đây, bạn sẽ xác định:

  • Phương thức HTTP (ví dụ: POST, GET).

  • Loại xác thực (authorizationType).

  • Các tham số cần thiết từ header, đường dẫn (path parameters) hoặc chuỗi truy vấn (query parameters).

  • Quan trọng nhất: bạn có thể cấu hình validation để kiểm tra tính hợp lệ của dữ liệu đầu vào ngay tại đây, giúp loại bỏ các request không hợp lệ trước khi chúng đến backend.

2. Integration Request - Cầu nối đến Backend

Sau khi một request được chấp nhận, Integration Request sẽ là cầu nối đưa nó đến backend của bạn. Có ba loại tích hợp phổ biến:

  • HTTP Integration: Phổ biến nhất, chuyển tiếp request đến một endpoint HTTP/HTTPS (như một server, Load Balancer, hoặc một API khác).

  • Lambda Integration: Dùng để kích hoạt một hàm AWS Lambda, rất phù hợp cho kiến trúc serverless.

  • MOCK Integration: Trả về phản hồi giả lập trực tiếp từ API Gateway mà không cần gửi đến backend. Loại này đặc biệt hữu ích cho việc xử lý CORS, như chúng ta sẽ tìm hiểu bên dưới.

Tại đây, bạn cũng có thể "ánh xạ" (mapping) các tham số từ Method Request sang Integration Request để backend nhận được dữ liệu theo đúng định dạng mong muốn.

3. Integration Response - Xử lý phản hồi từ Backend

Đây là thành phần xử lý phản hồi từ backend. Nó đóng vai trò như một "phiên dịch viên", dịch kết quả từ backend thành một định dạng phù hợp trước khi gửi đến client.

  • Response Mapping: Bạn có thể định nghĩa cách API Gateway ánh xạ các mã trạng thái (status code) từ backend (ví dụ: 200, 400, 500) thành mã trạng thái của API.

  • Error Handling: Bạn có thể cấu hình các mẫu (selectionPattern) để xử lý các loại lỗi khác nhau một cách linh hoạt.

4. Method Response - Định nghĩa Response Schema

Method Response định nghĩa cấu trúc cuối cùng của phản hồi mà client sẽ nhận được. Bạn có thể định nghĩa các header sẽ có trong response (ví dụ: Access-Control-Allow-Origin cho CORS) và cả cấu trúc dữ liệu (responseModels) để đảm bảo tính nhất quán.

5. Test - Đảm bảo API hoạt động đúng

API Gateway cung cấp một công cụ kiểm thử tích hợp rất hữu ích. Bạn nên tạo các trường hợp kiểm thử để:

  • Kiểm tra validation của Method Request.

  • Xác minh các tham số đường dẫn và chuỗi truy vấn.

  • Đặc biệt, kiểm thử CORS preflight bằng cách sử dụng curl -X OPTIONS để đảm bảo API của bạn đã được cấu hình đúng.


Giải quyết vấn đề CORS - Cơn đau đầu của mọi Developer

CORS (Cross-Origin Resource Sharing) là một cơ chế bảo mật của trình duyệt, ngăn chặn các yêu cầu HTTP từ một tên miền (domain) này đến một tên miền khác. Ví dụ, nếu ứng dụng của bạn chạy ở myapp.com và gọi API tại api.myapp.com, trình duyệt sẽ gửi một yêu cầu đặc biệt gọi là preflight request (OPTIONS) trước để kiểm tra. Nếu API không được cấu hình để trả về các header CORS phù hợp, yêu cầu chính sẽ bị chặn.

Giải pháp hiệu quả trên API Gateway

Để xử lý CORS, bạn cần làm hai việc chính:

  1. Thêm phương thức OPTIONS cho mọi tài nguyên (Resource): Đây là yêu cầu preflight. Bạn cần thêm một phương thức OPTIONS cho mỗi API endpoint của mình.

  2. Cấu hình các Header CORS: Đảm bảo rằng phương thức OPTIONS và các phương thức chính (GET, POST, v.v.) trả về các header sau trong phản hồi:

    • Access-Control-Allow-Origin: Chỉ định tên miền nào được phép truy cập. Sử dụng '*' để cho phép tất cả.

    • Access-Control-Allow-Methods: Liệt kê các phương thức HTTP được phép.

    • Access-Control-Allow-Headers: Liệt kê các header được phép trong yêu cầu.

HTTP Integration vs. MOCK Integration cho CORS

  • HTTP Integration: Đây là lựa chọn được khuyến khích vì nó nhất quán. API Gateway sẽ chuyển tiếp yêu cầu OPTIONS đến backend, và backend sẽ xử lý logic CORS. Điều này giúp bạn quản lý logic CORS tập trung tại một nơi. Mặc dù có thêm một chút độ trễ, nhưng nó mang lại tính nhất quán và dễ gỡ lỗi hơn.

  • MOCK Integration: Đây là một lựa chọn nhanh hơn. API Gateway tự trả lời yêu cầu OPTIONS mà không cần đến backend. Tuy nhiên, nó yêu cầu bạn phải cấu hình CORS tĩnh tại API Gateway và có thể khó bảo trì hơn khi số lượng API tăng lên.

URL: Enabling CORS for a non-simple request

Test: Test CORS for an API Gateway API

Mẹo quan trọng: Đảm bảo Path Parameters được ánh xạ đúng

Khi thêm phương thức OPTIONS cho các API có tham số đường dẫn (ví dụ: /users/{user_id}), hãy nhớ rằng OPTIONS cũng cần ánh xạ tham số này. Nếu không, yêu cầu preflight sẽ bị lỗi.


Kết luận

API Gateway là một công cụ cực kỳ mạnh mẽ. Việc hiểu rõ cách các thành phần hoạt động cùng nhau và biết cách xử lý CORS đúng cách sẽ giúp bạn xây dựng và duy trì các hệ thống APIs linh hoạt, bảo mật và hiệu quả. Hãy nhớ, luôn luôn tự động hóa quá trình cấu hình CORS bằng script để tiết kiệm thời gian và tránh sai sót.

Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại để lại bình luận nhé! Happy coding!

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday