一日一技:在Ocelot网关中统一配置Swagger

概述

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。在Ocelot网关中,我们提供给前端的直接是Swagger,如果Swagger分布在各个API中,前端查看Swagger的时候非常不便,Ocelot与Swagger的集成,方便在网关项目中统一查看各个服务的api文档。所以下面我们尝试把各个项目集合起来。

主要代码实现

1、客户端项目安装Swashbuckle.AspNetCore

2、ConfigureServices配置

 services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new OpenApiInfo { Title = "客户端1 API", Version = "v1", Description = "# 客户端1 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);

3、Configure配置

  app.UseSwagger();app.UseSwaggerUI(c =>{c.SwaggerEndpoint("/swagger/v1/swagger.json", "客户端1 API V1");});

4、项目运行起来,http://localhost:5000/swagger/index.html

5、接下去是网关项目,安装如下

6、ConfigureServices配置

    services.AddSwaggerGen(c =>{c.SwaggerDoc("v1",new OpenApiInfo { Title = "网关test API", Version = "v1", Description = "# 网关test api..." });});services.AddOcelot(Configuration).AddConsul();

7、Configure配置

  app.UseSwagger();app.UseSwaggerUI(c =>{c.SwaggerEndpoint("/swagger/v1/swagger.json", "客户端1 API V1");// c.SwaggerEndpoint("/product/swagger/v1/swagger.json", "Product API V1");});

8、ocelot.json添加路由

{"DownstreamPathTemplate": "/swagger/v1/swagger.json","DownstreamScheme": "http","UpstreamPathTemplate": "/swagger/v1/swagger.json","UpstreamHttpMethod": [ "Get" ],"ServiceName": "ProductService","LoadBalancerOptions": {"Type": "RoundRobin"}},

9、最后,项目运行起来 http://localhost:5003/swagger/index.html

总结

1、在运行过程的时候会报错,如下

内部异常 1:
Exception: Unable to start Ocelot, errors are: Unable to start Ocelot, errors are: Unable to start Ocelot because either a ReRoute or GlobalConfiguration are using ServiceDiscoveryOptions but no ServiceDiscoveryFinderDelegate has been registered in dependency injection container. Are you missing a package like Ocelot.Provider.Consul and services.AddConsul() or Ocelot.Provider.Eureka and services.AddEureka()?,Unable to start Ocelot, errors are: Unable to start Ocelot because either a ReRoute or GlobalConfiguration are using ServiceDiscoveryOptions but no ServiceDiscoveryFinderDelegate has been registered in dependency injection container. Are you missing a package like Ocelot.Provider.Consul and services.AddConsul() or Ocelot.Provider.Eureka and services.AddEureka()?
问题原因: 容器中缺少相应的服务

解决办法:

install-package Ocelot.Provider.Consul

ConfigureServices服务注册中修改为 : services.AddOcelot(Configuration).AddConsul();

2、开源地址:https://gitee.com/conanOpenSource_admin/Example

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle Solaris 11 Express发布了

甲骨文Solaris 11 Express操作系统在Solaris 10的基础上进一步加强了各种功能,Solaris 11 Express将为关键的企业系统环境提供最佳的UNIX体验(与之相对应的是Oracle Enterprise Linux,将提供最优的Linux体验)。举例而言新系统中基于网络的包管理工具(pac…

自从我上了数据结构课之后……

在 Reddit 上看到一个英文帖子,问:上了数据结构课后,还有正常生活么?有人引用了 Quora 上的一个英文回答,大意如下:嗯,没有!你看东西的眼光,不可能和以前一样了。不管你信…

如何在 C#9 中使用 static 匿名函数

匿名函数 在 C# 中已经出现很多年了,虽然匿名函数用起来很爽,但代价是不小的,为了避免不必要那些你意想不到的内存分配,这就是为什么 C#9 中引入 static 匿名函数的原因,这篇文章我们将会讨论如何使用 静态匿名函数 以…

Linux 远程桌面 rdesktop 软件

为什么80%的码农都做不了架构师?>>> 众所周知XP下有"远程桌面连接"用来远程登录桌面,设置也非常简单。那有没有什么办法在linux 下远程登录到XP呢?有。用rdesktop这个linux下的软件就能实现。 发现新立得也有下载&…

linux进程的高级管理,Linux高级程序设计(第2版) PDF扫描版[94MB]

Linux高级程序设计(第2版)以Linux操作系统(内核为2.6版本)为开发平台、GCC 4.0/GDB 6.3为开发调试环境,详细介绍了Linux系统下编程环境及编程工具、文件管理(文件类型、ANSI以及POSIX标准下文件读写操作)、进程管理(创建、退出、执行、等待、属性控制)、进程间通信(…

人工智能的算法黑箱与数据正义

前段时间,《终极算法》作者、人工智能著名学者、华盛顿大学教授 Pedro Domingos 在社交网络中写道:“自 5 月 25 日起,欧盟将会要求所有算法解释其输出原理,这意味着深度学习成为非法的方式。”一石激起千层浪。人们不禁要问&…

快速了解C# 8.0中“可空引用类型(Nullable reference type)”语言特性

Visual C# 8.0中引入了可空引用类型(Nullable reference type),通过编译器提供的强大功能,帮助开发人员尽可能地规避由空引用带来的代码问题。这里我大致介绍一下可空引用类型的基本内容。刚开始接触这个语言特性的时候&#xff0…

为什么软件工程师找不到工作?我想分享四个“恐怖故事”

编者按:作为一个程序员,如果没有收到心仪的工作offer,你是不是会对自己失去信心?对接创业者和程序员的网站coderfit.com 的创始人Iwan认为你无须担心。他分享了四个“恐怖故事”,告诉我们——那些厉害的工程师被拒绝的…

使用GZipStream实现压缩和解压缩

概述之前做项目,涉及到存入到数据库或者http传输的数据量比较大,这个时候,就需要考虑在存入数据库或者发送传输之前,将数据压缩下,当从数据库中取出时,再解压还原数据。特地找了下发现有GZipStream可以实现…

linux 核显驱动程序,支持下代核显 Intel放出Linux图形驱动

【IT168 资讯】虽然Ivy Bridge处理器的发布因为策略原因被推迟到2012年3-4月份,但是Intel在硬件、软件的开发上进展颇为顺利,近日还放出了新款Linux开源图形驱动,已然支持Ivy Bridge中的整合图形核心。▲Intel新款Linux开源图形驱动Chris Wil…

看完此文再不懂区块链算我输:手把手教你用Python从零开始创建区块链

导读:如果你还没有听说过 3 点钟区块链群,说明你还不是链圈的人;如果你还没有加入 3 点钟区块链群,说明你还不是链圈的大佬;如果你还没有被 3 点钟区块链群刷屏,说明你还体会不到什么是“币圈一天&#xff…

过于在意别人的看法,怎么办?

大家好,我是Z哥。你有特别在意别人的看法吗?如果从别人那里听到对自己不好的评价会不会导致一整天都闷闷不乐,做事都没心思?如果从别人那里听到对自己好的评价会不会做起事来都像打了鸡血一样?我相信每个人都会在意别人…

linux 虚拟机挂载本地,CentOS 在VMWare中挂载本地yum源

准备工作虚拟机 VMWare系统 CentOS 7 镜像一、挂载镜像操作之前点击 虚拟机设置 CD/DVD处勾选 设备状态[x] 已连接[x] 启动时连接挂载镜像mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom二、创建yum配置mv /etc/yum.repos.d /etc/yum.repos.d.back mkdir /etc/yum.repos.d三、创…

干货整理:处理不平衡数据的技巧总结!收好不谢

文:Rick Radewagen译:李萌在银行欺诈检测,市场实时竞价或网络入侵检测等领域通常是什么样的数据集呢?在这些领域使用的数据通常有不到1%少量但“有趣的”事件,例如欺诈者利用信用卡,用户点击广告…

MongoDB,凉凉?

英国《卫报》正式告别 MongoDB,完成了向 PostgreSQL 的迁移;RedHat 移除 MongoDB,Fedora、Debian 亦在其列;再加上前不久刚因程序员爬虫而扣上的一口 2 亿简历泄露的安全事故大黑锅——比起 “Hello World”,一只脚刚踏…

linux ubuntu 开启ssh服务,开启SSH服务远程登录ubuntu

Ubuntu系统(14.04 LTS)ssh–secure shell,提供安全的远程登录。从事嵌入式开发搭建linux开发环境中,ssh的服务的安装是其中必不可少的一步。ssh方便一个开发小组中人员登录一台服务器,从事代码的编写、编译、运行。方便代码的共享及管理。ssh…

兄dei,Python数据竞赛和5万现金奖励了解一下

“少年,我看你骨骼精奇,是万中无一的技术奇才,维护世界和平就靠你了,我这有一个拯救世界的机会(还有50000大奖,美滋滋……),见与你有缘就免费告诉你了!”剧情是这样展开的…

聊聊自驱团队的构建(四)

本文聊聊一个议题,构建知识型组织。1 背景研发团队最重要的一件事莫过于重视知识工作的开展了,尤其是以.NET为主要技术栈的企业,随着招人成本的不断提高,依托团队组织建立的知识型队伍,定期开展培训,促进团…

别再提程序员应届年薪20万了,人工智能已经年薪60万了!

对人工智能而言,2017是不平凡的一年:AlphaGo再胜人类腾讯宣布进军AI百度无人驾驶汽车上五环AI教育要从娃娃抓起寒武纪成全球AI芯片首个独角兽阿里巴巴成立达摩院类人机器人Sophia首获公民身份国家正式公布人工智能四大平台..........近年来,人…

动手造轮子:实现一个简单的基于 Console 的日志输出

动手造轮子:实现一个简单的基于 Console 的日志输出Intro之前结合了微软的 Logging 框架和 Serilog 写了一个简单的日志框架,但是之前的用法都是基于 log4net、serilog 的,没有真正自己实现一个日志输出,比如 Console、文件、数据…