asp.net core 搭建WebAPI微服务-----网关

    科技2026-09-26  15

    微服务网关主要是用来访问服务的,所有的连接都经过网关。

    创建网关:

    新建一个asp.net core 项目,

    项目nuget包管理安装已下包:

    在ConfigureServices函数里添加如下代码

    分别注册的是Swagge和OcelotGateway的。

    在Configure 函数添加如下代码:

    app.UseSwaggerUI(c => { c.SwaggerEndpoint("/UserService/swagger.json", "user api"); c.SwaggerEndpoint("/todayservice/swagger.json", "today api"); c.SwaggerEndpoint("/journalismservice/swagger.json", "journalism api"); }); //用来访问各个微服务的swagger的 app.UseOcelot();

    然后在appsettings.json配置文件里添加如下配置:

    { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "ReRoutes": [ //{ // "DownstreamPathTemplate": "/{url}", //服务地址--url变量 // "DownstreamScheme": "http", // "DownstreamHostAndPorts": [ // { // "Host": "localhost", // "Port": 5166 //服务端口 // } //可以多个,自行负载均衡 // ], // "UpstreamPathTemplate": "/{url}", //网关地址--url变量 //冲突的还可以加权重Priority // "UpstreamHttpMethod": [ "Get", "Post","Put","Delete" ] //} { "DownstreamPathTemplate": "/swagger/userservice/swagger.json", //服务地址--url变量 "DownstreamScheme": "http", "UpstreamPathTemplate": "/userservice/swagger.json", //网关地址--url变量 //冲突的还可以加权重Priority "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ], "ServiceName": "today_userservice", "UseServiceDiscovery": true }, { "DownstreamPathTemplate": "/swagger/todayservice/swagger.json", //服务地址--url变量 "DownstreamScheme": "http", "UpstreamPathTemplate": "/todayservice/swagger.json", //网关地址--url变量 //冲突的还可以加权重Priority "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ], "ServiceName": "today_service", "UseServiceDiscovery": true }, { "DownstreamPathTemplate": "/userservice/{url}", //服务地址--url变量 "DownstreamScheme": "http", "UpstreamPathTemplate": "/userservice/{url}", //网关地址--url变量 //冲突的还可以加权重Priority "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ], "ServiceName": "today_userservice", "LoadBalancerOptions": { "Type": "RoundRobin" }, "UseServiceDiscovery": true }, { "DownstreamPathTemplate": "/todayservice/{url}", //服务地址--url变量 "DownstreamScheme": "http", "UpstreamPathTemplate": "/todayservice/{url}", //网关地址--url变量 //冲突的还可以加权重Priority "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ], "ServiceName": "today_service", "LoadBalancerOptions": { "Type": "RoundRobin" }, "UseServiceDiscovery": true }, { "DownstreamPathTemplate": "/swagger/journalismservice/swagger.json", //服务地址--url变量 "DownstreamScheme": "http", "UpstreamPathTemplate": "/journalismservice/swagger.json", //网关地址--url变量 //冲突的还可以加权重Priority "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ], "ServiceName": "today_journalismservice", "UseServiceDiscovery": true }, { "DownstreamPathTemplate": "/journalismservice/{url}", //服务地址--url变量 "DownstreamScheme": "http", "UpstreamPathTemplate": "/journalismservice/{url}", //网关地址--url变量 //冲突的还可以加权重Priority "UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ], "ServiceName": "today_journalismservice", "LoadBalancerOptions": { "Type": "RoundRobin" }, "UseServiceDiscovery": true } ], "GlobalConfiguration": { "BaseUrl": "http://127.0.0.1:555", "Host": "127.0.0.1", "Port": "8500", "Type": "Consul" } }

    之后再进入项目bin→debug→netcoreapp3.1目录下

    打开命令行执行:dotnet userservice.dll --urls="http://*:555" --ip="127.0.0.1" --port=555

    (ip和port自定义)

    进入swagger查看一下:

    右上角切换api服务,如果都显示各个api了表示成功。否则检查网关内配置文件里的服务地址是否正确。

    通过 网关地址:555/userservice/WeatherForecast访问服务api服务

    能获取到数据了表示配置成功!

    Processed: 0.008, SQL: 9