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)容到當前程序員“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”日志中間件實例,把當前類的操作信息持久化;或顯顯示在控制臺窗口中。
? ///
? ///
? 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版本--類】
? ///
? /// 摘要:
? /// ? ?該類中的枚舉實例通過版本分類的方式,把當前程序中的Api控制器方法分為兩類(也可以分為更多的類)。
? /// 應(yīng)用場景:
? /// ? ? 在由于前端版本迭代,而需要更新Api控制器方法時,為了兼容舊的前端就需要“Api版本”控制在不修改舊的Api控制器方法,而是定義新的Api控制器方法,來解決前端版本迭代的兼容性問題。
? ///
? ///
? public class CustomApiVersion
? {
? ///
? /// 【Api版本--枚舉】
? ///
? /// 摘要:
? /// ? ?該枚舉通過版本分類的方式,把當前程序中的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://www.rwnh.cn/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)
猜你還喜歡下面的內(nèi)容