引言

重复造轮子系列是自己平时的一些总结。有的轮子依赖社区提供的轮子为基础,这里把使用过程的一些觉得有意思的做个分享。有些思路或者方法在大神看来可能会比较low。但是能解决实际问题,相信有需要的人也在寻找类似的解决方案。这里可以算作是提供了一种思路,类似问题如果有读者能有更好的解决方案,愿闻其详。

若有阅读后引起内心冲突或者愤怒等不适以及自觉被误导者,不需要切换到抖音等欢乐频道进行综合调理,直接就可以在评论区吐槽。

 

网关简介

什么是网关,为什么用网关。这些问题网上有很多文章,讲解的非常全面。这里就不做重复的讲解了。

但后面的内容至少需要了解网关下面两点。

API网关是一个服务器,是系统的唯一入口。

API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能(提供监控、鉴权、负载均衡等)。

 

 

 

默认实现

下面演示的项目使用vs2019,Asp.Net Core 2.1开发

1、创建一个ASP.NET Core API项目Agile.Demo1.API,使用Swagger作为在线UI展示

项目结构如图1

 

图1

 

发布并且运行,为了方面启动运行,写了个批处理脚本,如图2

 

图2

 

直接双击start运行如图3

 

图3

 

浏览器打开显示效果如图4

 

图4

 

直接Swagger文档在线测试各个接口正常。

 

 

2、创建一个ASP.NET Core API项目Agile.Demo2.API 与Agile.Demo1.API项目类似。

 

 

3、创建一个基于ocelot的网关服务,项目结构如图5

 

图5

 

这里使用Ocelot来做网关,Ocelot是一堆特定顺序的中间件

 

配置ocelot.json,配置内容如下

复制代码
{    "ReRoutes": [      //API01 业务接口1     {        "DownstreamPathTemplate": "/{url}",        "DownstreamScheme": "http",