Chương II Phân tích, thiết kế API Gateway
2.2. Phân tích các tính năng của API Gateway
2.2.3. Định tuyến yêu cầu
Một trong những chức năng chính của API gateway là định tuyến yêu cầu. API gateway thực hiện một số hoạt động vận hành API bằng cách định tuyến các yêu cầu đến dịch vụ tương ứng. Khi nhận được yêu cầu, API Gateway sẽ tham khảo bản đồ định tuyến chỉ định dịch vụ nào để định tuyến yêu cầu. Ví dụ, bản đồ định tuyến có thể ánh xạ một phương thức HTTP và đường dẫn đến URL HTTP của dịch vụ. Phương thức này này giống hệt với các tính năng proxy ngược
Hình 2. 5. Minh họa proxy Trên hình là hình ảnh của một proxy thông thường. Proxy là trung chuyển yêu cầu truy cập internet của người dùng. Internet gửi lại phản hồi và proxy phải định tuyến để gửi tới đúng máy của người dùng.
Hình 2. 6. Minh họa một hệ thống microservices
Có thể thấy trên hình ảnh là yêu cầu của khách hàng tới một điểm duy nhất (API gateway) và yêu cầu định tuyến đến các dịch vụ bên trong.
Định tuyến (Routing) là cách thức để API Gateway chỉ ra đường dẫn URL
sẽ trỏ tới action . Nói một cách nôm na thì Routing chính là kẻ dẫn đường cho Web API sẽ gọi action nào tương đương với URL đã được cung cấp. API Gateway sẽ lập trình đạt được kiểu định tuyến được gọi là attribute routing (định tuyến thuộc tính). Như tên gọi, attribute routing (định tuyến thuộc tính)
sẽ là bộ định tuyến được xác định thông qua thuộc tính Route. Ví dụ, bạn có thể dễ dàng tạo ra URL bằng cách mô tả các đặc tính dựa trên việc thừa kế các nguồn tài nguyên.
Với attribute routing (định tuyến thuộc tính), thì rất dễ dàng để đạt được điều mong muốn là tạo ra URL có liên quan giữu nhiều tài nguyên. Sau đây là một vài ví dụ về mẫu URL khác mà định tuyến thuộc tính có thể tạo ra một cách dễ dàng
Ví dụ api 2 có các phiên bản khác nhau (trong này là version 1 và version 2: v1 v2): "/api/v1/products" nó sẽ được định tuyến tới controller version 1, còn đây là api cho vesion 2: "/api/v2/products".
API Gateway cũng lựa chọn các actions dựa trên HTTP Method của request (GET, POST, vv). Quy ước này bằng cách chọn method bằng bất kỳ thuộc tính nào trong số các thuộc tính liệt kê sau đây.
GET
POST
PUT
DELETE
Hình 2. 7. Biểu đồ tuần tự tính năng định tuyến yêu cầu
Mô tả tính năng:
1. Dịch vụ bên ngoài gửi yêu cầu tới API gateway.
2. Lấy URL và http method. Ví dụ URL là /petshop/1.0/user-info với
phương thức POST
3. Trích xuất thông tin với regex expression “/([^/]+)/([^/]+)/?([^/]+)”
ContextPath: petshop
Version: 1.0
Resource: user-info
4. Truy vấn cơ sở dữ liệu để lấy lên các thông tin về API, API version, API URL mapping
5. Thực hiện các chức năng filter khác
6. Gửi yêu cầu tới API bên trong với URL Mapping
7. Lấy ra kết quả.
2.2.4. Danh sách đen cho IP/ dải IP
Bằng các yêu cầu trong danh sách IP đen, API Gateway có thể bảo vệ các máy chủ khỏi các cuộc tấn công thông thường hoặc sự lạm dụng của người dùng.
Hình 2. 8. Biểu đồ tuần tự lọc danh sách đen
Mô tả tính năng:
1. Bên ngoài gửi yêu cầu tới API qua API Gateway
2. API Gateway trích xuất thông tin IP đích
a. API Gateway tìm kiếm IP đích trong bảng blacklist có thuộc IP hay dải địa chỉ IP không được cho phép hay không
3. Nếu có tồn tại trong bảng blacklist thì gửi ra thông báo chặn
4. Nếu không tồn tại trong bảng blacklist thì tiếp tục các tính năng khác
và phản hồi kết quả sau cùng
Ví dụ: nếu người dùng độc hại lạm dụng hệ thống, tất cả các yêu cầu nhận được từ IP hoặc dải IP của người dùng cụ thể đó có thể bị chặn hoàn toàn.
Hình 2. 9. Minh họa chức năng quản lý blacklist Hình trên ta có một IP được đưa vào danh sách đen là 192.168.16.101
Hình 2. 10. Thông báo lỗi thì IP thuộc blacklist