- vừa được xem lúc

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

0 0 46

Người đăng: Hoàng Đinh

Theo Viblo Asia

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/First image.png image.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/

Bình luận

Bài viết tương tự

- vừa được xem lúc

10 điều cần biết về In-Memory Caching trong ASP.NET Core

Mục đính chính của bất kỳ cơ chế caching nào cũng là để cải thiện hiệu suất của ứng dụng. Với một lập trình viên ASP.

0 0 51

- vừa được xem lúc

#1 Khởi tạo Project - Tạo một API đơn giản bằng ASP.NET CORE 5

Tổng quan. Hiện mình đang làm một dự án trên công ty và API được viết bằng ASP.NET Core. Thấy tạo API trong ASP.

0 0 142

- vừa được xem lúc

#2 Controller - Tạo một API đơn giản bằng ASP.NET CORE 5

Tổng quan. Bài trước mình đã khởi tạo một project ASP.NET Core 5 API trên Visual Studio 2019. Trong bài này, chúng ta hãy cùng nhau tìm hiểu về controller trong ASP.

0 0 62

- vừa được xem lúc

Tổng quan về Dependency Injection - Sử dụng Dependency Injection trong .NET CORE

1. Khái niệm.

0 0 80

- vừa được xem lúc

Áp dụng Cookie Authentication trong ASP .NET Core không dùng Identity

Cookie là một tệp văn bản chứa dữ liệu mà các trình duyệt web có thể truy cập, thông thường là những dữ liệu thời gian ngắn. Cookie Authentication là một khái niệm trong đó một số ngữ cảnh đã được xác

0 0 73

- vừa được xem lúc

Policy-Based Authorization trong ASP. NET Core

Trong bài biết này chúng ta sẽ tìm hiểu về Policy-Based Authorization trong ASP .NET Core.

0 0 34