应无所住,而生其心
排名
1
文章
872
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

.net core3.1使用API网关Ocelot一:简单使用

8854人阅读 2020/8/10 17:31 总访问:5416800 评论:2 收藏:0 手机
分类: 微服务

创建极简的两个项目
一个API网关项目(APIGateway),一个WebApi项目(ProductsAPIServices)

大概就是这个样子:

APIGateway项目
类型就选.net core的空项目即可

安装Ocelot依赖

  1. Install-Package Ocelot

创建一个Ocelot的配置文件configuration.json

  1. {
  2. "Routes": [
  3. {
  4. "DownstreamPathTemplate": "/api/customers",
  5. "DownstreamScheme": "http",
  6. "DownstreamHostAndPorts": [
  7. {
  8. "Host": "localhost",
  9. "Port": 9001
  10. }
  11. ],
  12. "UpstreamPathTemplate": "/customers",
  13. "UpstreamHttpMethod": [ "Get" ]
  14. },
  15. {
  16. "DownstreamPathTemplate": "/api/customers/{id}",
  17. "DownstreamHostAndPorts": [
  18. {
  19. "Host": "localhost",
  20. "Port": 9001
  21. }
  22. ],
  23. "DownstreamPort": 9001,
  24. "UpstreamPathTemplate": "/customers/{id}",
  25. "UpstreamHttpMethod": [ "Get" ]
  26. },
  27. {
  28. "DownstreamPathTemplate": "/api/products",
  29. "DownstreamScheme": "http",
  30. "DownstreamHostAndPorts": [
  31. {
  32. "Host": "localhost",
  33. "Port": 9002
  34. }
  35. ],
  36. "UpstreamPathTemplate": "/api/products",
  37. "UpstreamHttpMethod": [ "Get" ]
  38. }
  39. ],
  40. "GlobalConfiguration": {
  41. "RequestIdKey": "OcRequestId",
  42. "AdministrationPath": "/administration"
  43. }
  44. }

注意:Ocelot 16.x之后配置要换成Routes而不是ReRoutes,否则会报错

在Program的CreateHostBuilder中添加配置文件的使用

  1. public class Program
  2. {
  3. public static void Main(string[] args)
  4. {
  5. CreateHostBuilder(args).Build().Run();
  6. }
  7. public static IHostBuilder CreateHostBuilder(string[] args) =>
  8. Host.CreateDefaultBuilder(args)
  9. .ConfigureAppConfiguration((hostingContext, config) =>
  10. {
  11. //添加配置文件的使用
  12. config
  13. .SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
  14. .AddJsonFile("configuration.json")
  15. .AddEnvironmentVariables();
  16. })
  17. .ConfigureWebHostDefaults(webBuilder =>
  18. {
  19. webBuilder.UseStartup<Startup>();
  20. webBuilder.UseUrls("http://*:9000");
  21. });
  22. }

修改启动端口还可以在launchSettings.json中修改

Startup中添加Ocelot相关的引用

  1. public class Startup
  2. {
  3. public void ConfigureServices(IServiceCollection services)
  4. {
  5. services.AddOcelot();
  6. services.AddHttpContextAccessor();
  7. }
  8. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  9. {
  10. app.UseOcelot();
  11. }
  12. }

ok到这一步Ocelot的相关引用已经搞定了



WebApi项目
这个就很简单了,随便创建一个webapi的项目,然后添加一个叫Customers的API控制器

顺手把启动的端口换成9001吧

切换到项目目录中使用dotnet run启动,然后保证可以正常访问这个api控制器即可



所有工作准备完毕,可以尝试使用api官网到访问具体的api
可以看到我们访问api网关项目,成功访问到具体的api

看运行日志可以看到请求的真实地址

代码地址:
https://download.tnblog.net/resource/index/13c7281eb89141c9917780a11b0b0d8f


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

默认昵称

2022/7/25 18:12:36

不错,简单明了

2022/7/26 10:02:43 回复

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

使用OLEDB读取不同版本Excel的连接字符串设置

使用OleBD读取excel的时候,excel不同的版本,连接字符串的写法也会不一样。///&lt;summary&gt; ///读取excel ///&lt;/su...

C 使用CancellationTokenSource取消多线程

有时间我们在使用多线程的时候,需要取消线程的执行,可以使用CancellationTokenSource来取消对Task开辟多线程的取消如下:...

使用爬虫刷csdn博客访问量

首先了解一下常见反爬虫的检测方法频率监测:有些网站会设置一种频率监测的机制,对于同一IP,若在一定时间内访问的速度超...

Idea下使用maven搭建SSM():SpringMVC

Spring MVC是一款基于MVC架构模式的轻量级Web框架,其目的是将Web开发模块化,对整体架构进行解耦,简化Web开发流程。下面...

Idea下使用maven搭建SSM(二):MyBatis

开发Web应用,数据的存储和处理往往离不开数据库和SQL语句。在使用Java开发的Web应用中,自然也少不了连接数据库的步骤。在...

使用 微软自带语音合成类库

//引入语音合成名称空间 usingSystem.Speech.Synthesis; classA { voidtest1() { //实例化并指定字符串播放合成读音 ...

如何使用图标像使用文字样,使用文本图标的方法

1.首先在Iconfont-阿里巴巴矢量图标库上面找到你需要的图标然后加入你的购物车然后选择图标;注意:每个类型的图标会大小不...

使用七牛云的cdn服务,提高图片的加载速度

CDN介绍CDN的全称是Content Delivery Network,即内容分发网络。CDN加速主要是加速静态资源,如网站上面上传的图片、媒体,...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

使用OutLook发送邮件

publicstaticvoidOutlook(stringSubject,stringTextBody,stringFromAdd,stringFromPass,stringTo,stringCC,List&lt;string&...

SQL Server 中使用游标

--声明一个游标 DECLAREMyCursorCURSOR FORSELECTTOP5FBookName,FBookCodingFROMTBookInfo//定义一个叫MyCursor的游标,...

Windows使用wireshark抓包小心得

wireshrak是个网络抓包工具,常用。但是在数据较大的网络环境中直接使用软件抓包会导致wireshark卡死。为什么呢 ?网卡瞬间...

Oracle自定义函数的简单使用

一.最最最简单的返回一个数字的函数createorreplacefunctionfun_show returnint--申明返回值 as begin return1; end;...

Oracle事务的简单使用

事务:  事务是一个整体,这些操作要么全部执行成功,要么全部不执行。使用事务的原因:保证数据的安全有效。事务的四个特...

Oracle使用游标

其实游标就是把查询的结果放入游标中,然后在去游标里边读取。相当于使用游标做了一个中转,而游标是可以作为参数进行传递...