重复造轮子系列——基于Ocelot实现类似支付宝接口模式的网关
引言
重复造轮子系列是自己平时的一些总结。有的轮子依赖社区提供的轮子为基础,这里把使用过程的一些觉得有意思的做个分享。有些思路或者方法在大神看来可能会比较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",