日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.Net Core微服务入门全纪录(完结)——Ocelot与Swagger

發布時間:2023/12/4 asp.net 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。