.Net Core微服务入门全纪录(完结)——Ocelot与Swagger
点击上方蓝字"小黑在哪里"关注我吧
前言
上一篇【.Net Core微服务入门全纪录(八)——Docker Compose与容器网络】完成了docker-compose.yml文件的编写,最后使用docker compose的一个up指令即可在docker中运行整个复杂的环境。本篇简单介绍一下Ocelot与Swagger的集成,方便在网关项目中统一查看各个服务的api文档。
开始
首先,网关项目,服务项目 NuGet安装Swashbuckle.AspNetCore
:
服务项目
Order.API项目Startup:
public void ConfigureServices(IServiceCollection services)
{services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new OpenApiInfo { Title = "Order API", Version = "v1", Description = "# order service api..." });// Set the comments path for the Swagger JSON and UI.var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);c.IncludeXmlComments(xmlPath);c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme(){Description = "在下框中输入请求头中需要添加Jwt授权Token:Bearer Token",Name = "Authorization",In = ParameterLocation.Header,Type = SecuritySchemeType.ApiKey,BearerFormat = "JWT",Scheme = "Bearer"});c.AddSecurityRequirement(new OpenApiSecurityRequirement{{new OpenApiSecurityScheme{Reference = new OpenApiReference {Type = ReferenceType.SecurityScheme,Id = "Bearer"}},new string[] { }}});});services.AddControllers();......
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime, OrderContext orderContext)
{......app.UseSwagger();app.UseSwaggerUI(c =>{c.SwaggerEndpoint("/swagger/v1/swagger.json", "Order API V1");});app.UseRouting();......
}
打开项目文件Order.API.csproj,添加生成文档的配置,swagger要用到:
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
Product.API项目也是类似的修改,就不贴了。
网关项目
然后是Ocelot网关项目的Startup:
public void ConfigureServices(IServiceCollection services)
{services.AddSwaggerGen(c =>{c.SwaggerDoc("v1",new OpenApiInfo {Title = "Gateway API", Version = "v1", Description = "# gateway api..."});});services.AddControllers();......
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{app.UseSwagger();app.UseSwaggerUI(c =>{c.SwaggerEndpoint("/order/swagger/v1/swagger.json", "Order API V1");c.SwaggerEndpoint("/product/swagger/v1/swagger.json", "Product API V1");});//设置Ocelot中间件app.UseOcelot().Wait();
}
ocelot.json配置文件,Routes节点下增加2个路由配置,不做授权,限流,熔断等限制:
{"DownstreamPathTemplate": "/swagger/v1/swagger.json","DownstreamScheme": "http","UpstreamPathTemplate": "/product/swagger/v1/swagger.json","UpstreamHttpMethod": [ "Get" ],"ServiceName": "ProductService","LoadBalancerOptions": {"Type": "RoundRobin"}
},
{"DownstreamPathTemplate": "/swagger/v1/swagger.json","DownstreamScheme": "http","UpstreamPathTemplate": "/order/swagger/v1/swagger.json","UpstreamHttpMethod": [ "Get" ],"ServiceName": "OrderService","LoadBalancerOptions": {"Type": "RoundRobin"}
}
运行测试
使用docker-compose build:
build完成后启动:
浏览器访问网关项目:http://localhost:9070/swagger
接口测试:
此时因为没有授权所以返回401,为了方便获取token,我在IDS4.AuthCenter项目增加了一个客户端配置:
new Client
{ClientId = "postman client",ClientName = "Postman Client",AllowedGrantTypes = GrantTypes.ClientCredentials,ClientSecrets = { new Secret("postman client secret".Sha256()) },AllowedScopes = new [] {"orderApiScope", "productApiScope"},
}
使用postman获取token:
拿到token填入文本框,格式是Bearer xxxxxx,注意空格。这里的提示文字乱码了,应该是在docker中运行的原因,这个不影响先不管他。
填入token后再次请求接口,就可以正常返回了:
至此,Ocelot与Swagger的集成就完成了。本篇内容比较简单,swagger应该大部分人都用过。
最后
这个系列博客就到此结束了,本来也就是入门级别的。再往后可能就是更深入的服务治理,比如日志、监控、链路追踪等;服务的持续集成、持续部署;容器编排(k8s);服务网格(Service Mesh)等等。。。这些都不属于入门的范围了。
当然,不是每个公司都适合k8s,也不是每个项目都要做微服务。为了盲目推崇某个技术而去使用它时,它便失去了原本的价值。技术本不分高低,适合自己的就是最好的。感谢关注我的小伙伴们。。。
如果本文对您有用,
不妨点个“在看”或者转发朋友圈支持一下
.Net Core微服务入门全纪录(完结)——Ocelot与Swagger相关推荐
- .net core ocelot 获取路由的mothed_Net Core微服务入门全纪录(四)Ocelot网关(上)
上一篇[.Net Core微服务入门全纪录(三)--Consul-服务注册与发现(下)]已经使用Consul完成了服务的注册与发现,实际中光有服务注册与发现往往是不够的,我们需要一个统一的入口来连接客 ...
- swagger 返回json字符串_Net Core微服务入门全纪录(完结)——Ocelot与Swagger
前言 上一篇[.Net Core微服务入门全纪录(八)--Docker Compose与容器网络]完成了docker-compose.yml文件的编写,最后使用docker compose的一个up指 ...
- .Net Core微服务入门——Ocelot API网关接入(二)
Net Core微服务入门--Ocelot API网关接入(二) 我们先接入Consul,实现服务发现 服务发现 1.引入 Ocelot.Provider.Consul 包 2.修改ocelot.js ...
- .Net Core微服务入门——Ocelot和Consul集群高可用
.Net Core微服务入门--Ocelot和Consul集群高可用 上一章 我们ocelot网关顺利的接入了consul集群,并且访问成功. 但是,我们也遇到了问题,把 192.168.8.25 上 ...
- .Net Core微服务入门——Ocelot API网关接入(一)
.Net Core微服务入门--Ocelot API网关接入 上一章我们测试了一个简单的Client 端访问Consul实现服务注册与发现,但是现实生产环境我们直接通过Client自行连接Consul ...
- .NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇
前言 最近一直在忙公司和私下的兼职,白天十个小时,晚上四个小时,感觉每天都是打了鸡血似的,精神满满的,连自己那已经学打酱油的娃都很少关心,也有很长一段时间没有更新博客了,特别抱歉,小伙伴们都等得想取关 ...
- NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇
前言 最近一直在忙公司和私下的兼职,白天十个小时,晚上四个小时,感觉每天都是打了鸡血似的,精神满满的,连自己那已经学打酱油的娃都很少关心,也有很长一段时间没有更新博客了,特别抱歉,小伙伴们都等得想取关 ...
- .net core微服务入门之Polly
Polly极简介绍 Polly是一个被.NET基金会认可的弹性和瞬态故障处理库,允许我们以非常顺畅和线程安全的方式来执诸如行重试,断路,超时,故障恢复等策略,其主要功能如下: 重试(Retry) 断路 ...
- NET Core微服务之路:基于Ocelot的API网关Relay实现--RPC篇
前言 我们都知道,API网关是工作在应用层上网关程序,为何要这样设计呢,而不是将网关程序直接工作在传输层.或者网络层等等更底层的环境呢?让我们先来简单的了解一下TCP/IP的五层模型. (图片出自ht ...
最新文章
- 据说只有程序员才看得懂 | 每日趣闻
- MFC之键盘和键盘消息处理
- 计算机网络实验四:利用UDP协议实现点对点聊天
- python建立ip代理池_Python搭建代理IP池实现存储IP的方法
- 胰腺癌代谢生物标志物最新研究成果:诊断效率明显优于传统标志物
- python规则引擎开发经验_关于物联网规则引擎技术,你想要知道的都在这儿!
- AD原理图编译ERROR:GND contains Output Pin and Power Pin objects
- 从实操教学到赛题演练,腾讯专家亲授TI-ONE平台操作攻略!
- 江苏大学21考研计算机技术上岸
- Datatable转换为Json
- 【CCCC】L3-007 天梯地图 (30分),两次Dijkstra+路径打印(数据点2,4错因),90行最短题解
- python做计量经济学的书籍_《计量经济学》教材书单
- Keras中文官方文档(离线版)
- 基于51单片机的智能温控风扇(程序+仿真+原理图)
- 月球 地球 三维位置_微软的月球飞行模拟器是一次了不起的未完成的地球之旅...
- 教你把竖屏视频剪辑为横屏播放的方法
- 2022-2028年全球与中国端点保护平台(EPP)行业市场深度调研及投资预测分析
- Rsync守护进程部署和实践
- 我们应该怎样看待经济危机
- 为什么外链建设对于谷歌SEO至关重要?