第10章Swagger自定義實現(xiàn)index.html頁-創(chuàng)新互聯(lián)

1 初始化index.html頁

創(chuàng)新互聯(lián)為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設(shè)計服務(wù),主要包括成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、App定制開發(fā)、微信小程序開發(fā)、宣傳片制作、LOGO設(shè)計等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗豐富的經(jīng)驗,可以確保每一個作品的質(zhì)量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。 

復(fù)制原程序“index.html”頁的內(nèi)容到當(dāng)前程序員“index.html”頁。

注意:是內(nèi)容復(fù)制,如果是頁面替換復(fù)制,則必須重新把“index.html”頁的屬性中的“生成操作”設(shè)定為:“嵌入的資源”。

2 自定義SwaggerSetup依賴注入中間件

using Common.GlobalVar;

using Common.Helper;

using log4net;

using Microsoft.Extensions.DependencyInjection;

using Microsoft.OpenApi.Models;

using Swashbuckle.AspNetCore.Filters;

using System.Runtime.InteropServices;

using static Extensions.ServiceExtensions.CustomApiVersion;

namespace Extensions.ServiceExtensions

{

? ///

? /// 【Swagger依賴注入--類】

? ///

? ///

? /// 摘要:

? /// ? ? 通過AddSwaggerGen依賴注入中間,獲取Api控制器方法的版本控制信息和注釋等數(shù)據(jù)信息,依賴注入.Net7框架的內(nèi)置容器中,為在“index.html”頁面上渲染顯示這些信息,作好預(yù)處理操作。

? ///

? public static class SwaggerSetup

? {

? #region 變量--私有/保護----靜態(tài)

? ///

? /// 【日志】

? ///

? /// 摘要:

? /// ? ? 通過“Log4net”日志中間件實例,把當(dāng)前類的操作信息持久化;或顯顯示在控制臺窗口中。

? ///

? ///

? private static readonly ILog log = LogManager.GetLogger(typeof(SwaggerSetup));

? #endregion

? #region 方法--靜態(tài)

? ///.Net(Core)框架內(nèi)置依賴注入容器實例。

? ///

? /// 【添加SqlSugar注入】

? ///

? ///

? /// 摘要:

? /// ? ? 通過AddSwaggerGen依賴注入中間,獲取Api控制器方法的版本控制信息和注釋等數(shù)據(jù)信息,依賴注入.Net7框架的內(nèi)置容器中,為在“index.html”頁面上渲染顯示這些信息,作好預(yù)處理操作。

? ///

? public static void AddSwaggerSetup(this IServiceCollection services)

? {

? if (services == null) throw new ArgumentNullException(nameof(services));

? var basePath = AppContext.BaseDirectory;

? //var basePath2 = Microsoft.DotNet.PlatformAbstractions.ApplicationEnvironment.ApplicationBasePath;

? var ApiName = AppSettings.app(new string[] { "Startup", "ApiName" });

? services.AddSwaggerGen(c =>

? {

? //遍歷出全部的版本,做文檔信息展示

? typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>

? {

? c.SwaggerDoc(version, new OpenApiInfo

? {

? Version = version,

? Title = $"{ApiName} 接口文檔——{RuntimeInformation.FrameworkDescription}",

? Description = $"{ApiName} HTTP API " + version,

? Contact = new OpenApiContact { Name = ApiName, Email = "Blog.Core@xxx.com", Url = new Uri("https://neters.club") },

? License = new OpenApiLicense { Name = ApiName + " 官方文檔", Url = new Uri("http://apk.neters.club/.doc/") }

? });

? c.OrderActionsBy(o =>o.RelativePath);

? });

? c.UseInlineDefinitionsForEnums();

? try

? {

? //這個就是剛剛配置的xml文件名

? var xmlPath = Path.Combine(basePath, "WebApi.xml");

? //默認的第二個參數(shù)是false,這個是controller的注釋,記得修改

? c.IncludeXmlComments(xmlPath, true);

? //這個就是Model層的xml文件名

? var xmlModelPath = Path.Combine(basePath, "Blog.Core.Model.xml");

? c.IncludeXmlComments(xmlModelPath);

? }

? catch (Exception ex)

? {

? log.Error("WebApi.xml和Blog.Core.Model.xml 丟失,請檢查并拷貝。\n" + ex.Message);

? }

? //Nuget--Swashbuckle.AspNetCore.Filters

? // 開啟加權(quán)小鎖

? c.OperationFilter();

? c.OperationFilter();

? // 在header中添加token,傳遞到后臺

? c.OperationFilter();

? // ids4和jwt切換

? if (Permissions.IsUseIds4)

? {

? //接入identityserver4

? c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme

? {

? Type = SecuritySchemeType.OAuth2,

? Flows = new OpenApiOAuthFlows

? {

? Implicit = new OpenApiOAuthFlow

? {

? AuthorizationUrl = new Uri($"{AppSettings.app(new string[] { "Startup", "IdentityServer4", "AuthorizationUrl" })}/connect/authorize"),

? Scopes = new Dictionary{

? {

? "blog.core.api","ApiResource id"

? }

? }

? }

? }

? });

? }

? else

? {

? // Jwt Bearer 認證,必須是 oauth2

? c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme

? {

? Description = "JWT授權(quán)(數(shù)據(jù)將在請求頭中進行傳輸) 直接在下框中輸入Bearer {token}(注意兩者之間是一個空格)\"",

? Name = "Authorization",//jwt默認的參數(shù)名稱

? In = ParameterLocation.Header,//jwt默認存放Authorization信息的位置(請求頭中)

? Type = SecuritySchemeType.ApiKey

? });

? }

? });

? //Nuget--Swashbuckle.AspNetCore.Newtonsoft

? services.AddSwaggerGenNewtonsoftSupport();

? }

? #endregion

? }

? ///

? /// 【自定義Api版本--類】

? ///

? /// 摘要:

? /// ? ?該類中的枚舉實例通過版本分類的方式,把當(dāng)前程序中的Api控制器方法分為兩類(也可以分為更多的類)。

? /// 應(yīng)用場景:

? /// ? ? 在由于前端版本迭代,而需要更新Api控制器方法時,為了兼容舊的前端就需要“Api版本”控制在不修改舊的Api控制器方法,而是定義新的Api控制器方法,來解決前端版本迭代的兼容性問題。

? ///

? ///

? public class CustomApiVersion

? {

? ///

? /// 【Api版本--枚舉】

? ///

? /// 摘要:

? /// ? ?該枚舉通過版本分類的方式,把當(dāng)前程序中的Api控制器方法分為兩類(也可以分為更多的類)。

? /// 應(yīng)用場景:

? /// ? ? 在由于前端版本迭代,而需要更新Api控制器方法時,為了兼容舊的前端就需要“Api版本”控制在不修改舊的Api控制器方法,而是定義新的Api控制器方法,來解決前端版本迭代的兼容性問題。

? ///

? ///

? public enum ApiVersions

? {

? ///

? /// 【V1】

? ///

? /// 摘要:

? /// ? ?第1種版本分類的Api控制器方法。

? ///

? ///

? V1 = 1,

?

? ///

? /// 【V2】

? ///

? /// 摘要:

? /// ? ?第2種版本分類的Api控制器方法。

? ///

? ///

? V2 = 2,

? }

? }

}

3 重構(gòu)Program類

//通過AddSwaggerGen依賴注入中間,獲取Api控制器方法的版本控制信息和注釋等數(shù)據(jù)信息,依賴注入.Net7框架的內(nèi)置容器中,為在“index.html”頁面上渲染顯示這些信息,作好預(yù)處理操作。

builder.Services.AddSwaggerSetup();

builder.Services.AddControllers();

按F5執(zhí)行程序,在執(zhí)行登錄操作后,即可跳轉(zhuǎn)到自定義的“index.html”面,如上圖所示

對以上功能更為具體實現(xiàn)和注釋見:221202_09Blog(Swagger自定義實現(xiàn)index.html頁)。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站欄目:第10章Swagger自定義實現(xiàn)index.html頁-創(chuàng)新互聯(lián)
標題網(wǎng)址:http://bm7419.com/article18/igogp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、小程序開發(fā)建站公司、App設(shè)計、手機網(wǎng)站建設(shè)、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)