dotnet微服务之API网关Ocelot

本文涉及的产品
云原生 API 网关,700元额度,多规格可选
简介: Ocelot 是一个基于 .NET 的 API 网关,适用于微服务架构。本文介绍了如何创建一个 Web API 项目并使用 Ocelot 进行 API 请求路由、负载均衡等。通过配置 `ocelot.json` 和修改 `Program.cs`,实现对 `GoodApi` 和 `OrderApi` 两个项目的路由管理。最终,通过访问 `https://localhost:7122/good/Hello` 和 `https://localhost:7122/order/Hello` 验证配置成功。

前言

Ocelot 是一个基于 .NET 平台的 API 网关,专门设计用于微服务架构。它提供了一种简单而灵活的方式来管理微服务架构中的 API 请求路由、负载均衡、认证、授权和监控等功能。

新建webapi项目并引用最新的Ocelot

新建ocelot.json

{
   
  "Routes": [
    {
   
      "UpstreamPathTemplate": "/good/{everything}",
      "UpstreamHttpMethod": [ "Get" ],
      "DownstreamPathTemplate": "/{everything}",
      "DownstreamScheme": "https",
      "DownstreamHostAndPorts": [
        {
   
          "Host": "localhost",
          "Port": 7027
        }
      ]
    },
    {
   
      "UpstreamPathTemplate": "/order/{everything}",
      "UpstreamHttpMethod": [ "Get" ],
      "DownstreamPathTemplate": "/{everything}",
      "DownstreamScheme": "https",
      "DownstreamHostAndPorts": [
        {
   
          "Host": "localhost",
          "Port": 7209
        }
      ]
    }
  ],
  "GlobalConfiguration": {
   
    "BaseUrl": "https://localhost:7122"
  }
}
AI 代码解读

修改Program.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Ocelot.DependencyInjection;
using Ocelot.Middleware;

var builder = WebApplication.CreateBuilder(args);

builder.Configuration.AddJsonFile("ocelot.json", optional: false, reloadOnChange: true);

builder.Services.AddOcelot();

var app = builder.Build();

app.UseOcelot().Wait();

app.Run();
AI 代码解读

新建webapi项目GoodApi与OrderApi

将HelloController.cs改为:

using Microsoft.AspNetCore.Mvc;

namespace OrderApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class HelloController : ControllerBase
    {
        private readonly ILogger<HelloController> _logger;

        public HelloController(ILogger<HelloController> logger)
        {
            _logger = logger;
        }

        [HttpGet]
        public string Get()
        {
            return "Hello GoodApi!" + DateTime.Now.ToString();
        }
    }
}
AI 代码解读
using Microsoft.AspNetCore.Mvc;

namespace OrderApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class HelloController : ControllerBase
    {
        private readonly ILogger<HelloController> _logger;

        public HelloController(ILogger<HelloController> logger)
        {
            _logger = logger;
        }

        [HttpGet]
        public string Get()
        {
            return "Hello OrderApi!" + DateTime.Now.ToString();
        }
    }
}
AI 代码解读

修改ocelot.json中的端口与实际项目一致

同时运行3个项目

访问:localhost:7122/good/Hellolocalhost:7122/order/Hello

显示:

附加说明

ocelot.json中UpstreamPathTemplate是我们访问api网关的路径

DownstreamPathTemplate是网关代理的后端的路径

最新版的配置文件中路由关键字是Routes,不是ReRoutes

作者

吴晓阳(手机:13736969112微信同号)

目录
打赏
0
1
1
0
44
分享
相关文章
微服务引擎 MSE 及云原生 API 网关 2025 年 1 月产品动态
微服务引擎 MSE 及云原生 API 网关 2025 年 1 月产品动态。
阿里云微服务引擎 MSE 及 云原生 API 网关 2025 年 1 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
阿里云微服务引擎 MSE 及 云原生 API 网关 2025 年 1 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 12 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 12 月产品动态。
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 12 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
151 12
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
132 8
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
本文是Vert.x学习系列的第五部分,讨论了回调函数的限制、Future和Promise在异步操作中的应用、响应式扩展以及Kotlin协程,并通过示例代码展示了如何在Vert.x中使用这些异步编程模式。
95 5
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
微服务(八)-服务网关zuul(四)
微服务(八)-服务网关zuul(四)
微服务(七)-服务网关zuul(三)
微服务(七)-服务网关zuul(三)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等