Triển khai API Gateway trong .NET Core với Ocelot – Tính năng cơ bản – Phần 1

I. Tạo project Ở đây mình tạo ra 3 project, trong đó: OcelotGateway: project API Gateway WebAPI.Cart: project service Giỏ hàng WebAPI.Product: project service Sản phẩm II. Tạo api cho các service Ở WebAPI.Cart, mình tạo các api cho cart Config port cho WebAPI.Cart Ở WebAPI.Product, mình tạo các api cho product Config port cho

I. Tạo project

Ở đây mình tạo ra 3 project, trong đó:

  • OcelotGateway: project API Gateway
  • WebAPI.Cart: project service Giỏ hàng
  • WebAPI.Product: project service Sản phẩm

II. Tạo api cho các service

Ở WebAPI.Cart, mình tạo các api cho cart

Config port cho WebAPI.Cart

Ở WebAPI.Product, mình tạo các api cho product

Config port cho WebAPI.Cart

III. Config API Gateway

1. Install package

Install package Ocelot trong project OcelotGateway
image.png

2. Config

Tạo file ocelot.json và cấu hình như sau
image.png

Thêm Ocelot vào project
image.png

IV. Tính năng

1. Routing

Chức năng
Ocelot sẽ nhận những request đầu vào và điều hướng đến service đích.
Config các route bằng cách tạo các route dưới dạng array json tại file ocelot.json:
image.png

Cấu trúc mỗi route:
image.png

  • DownstreamPathTemplate, Downstreamscheme và DownstreamHostAndports xác định URL mà request sẽ được chuyển đến
  • UpstreamPathTemplate là URL mà Ocelot sẽ sử dụng để xác định DownstreamPathTemplate sẽ sử dụng cho một request.
    Ví dụ: theo config ở trên, khi client vào url /posts/{postId} sẽ được map đến service tại localhost:80/api/post/{postId}

Demo
Ban nãy ta có tạo 2 web api service là:

Kết quả
Run 3 project WebAPI.Cart (port 6001), WebAPI.Product (port 5001), OcelotGateway (port 7141)
Khi truy cập https://localhost:7141/cart-gateway/Cart/First, request đã được map tới https://localhost:6001/cart-api/Cart/Firstimage.pngimage.png

Tương tự với product-api, khi truy cập /product-gateway/Product/First, request đã được map tới: https://localhost:7001/product-api/Product/First
Tìm hiểu thêm một số tính năng khác của Routing độ ưu tiên, query string, dynamic route,… tại https://ocelot.readthedocs.io/en/latest/features/routing.html

2. Aggregation

Ocelot cho phép map 2 hay nhiều request thành một request duy nhất
Ví dụ ta có 1 tính năng trước đây cần gọi 2 api riêng biệt là:
https://localhost:51881/laura: trả về {“Age”: 19}
https://localhost:51882/tom: trả về {“Age”: 25}

Khi sử dụng Request Aggregation, ta có thể biến nó thành 1 request duy nhất. Khi đó response sẽ trả về {“Tom”:{“Age”: 19}, “Laura”:{“Age”: 25}}
image.png

Tài liệu tham khảo

[1] https://ocelot.readthedocs.io/en/latest/introduction/bigpicture.html

[2] https://www.c-sharpcorner.com/article/building-api-gateway-using-ocelot-in-asp-net-core/

Nguồn: viblo.asia

Bài viết liên quan

SEO Mũ Trắng, Mũ Đen, Mũ Xám: Hiểu Biết và Lựa Chọn Phù Hợp

SEO Mũ Trắng, Mũ Đen, Mũ Xám: Hiểu Biết và Lựa Chọn Phù Hợp Trong kỷ nguyên s

7 Cách Tăng Tốc Ứng Dụng React Hiệu Quả Mà Bạn Có Thể Làm Ngay

React là một thư viện JavaScript phổ biến trong việc xây dựng giao diện người d

Trung Quốc “thả quân bài tẩy”: hàng loạt robot hình người!

MỘT CUỘC CÁCH MẠNG ROBOT ĐANG HÌNH THÀNH Ở TRUNG QUỐC Thượng Hải, ngày 13/5 –

9 Mẹo lập trình Web “ẩn mình” giúp tiết kiệm hàng giờ đồng hồ

Hầu hết các lập trình viên (kể cả những người giỏi) đều tốn thời gian x