真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

1 初始化index.html頁

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

? ///

? /// 【日志】

? ///

? /// 摘要:

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

? ///

? ///

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

? #endregion

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

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

? ///

? /// 【添加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

? {

? //這個(gè)就是剛剛配置的xml文件名

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

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

? c.IncludeXmlComments(xmlPath, true);

? //這個(gè)就是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 丟失,請(qǐng)檢查并拷貝。\n" + ex.Message);

? }

? //Nuget--Swashbuckle.AspNetCore.Filters

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

? c.OperationFilter();

? c.OperationFilter();

? // 在header中添加token,傳遞到后臺(tái)

? 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 認(rèn)證,必須是 oauth2

? c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme

? {

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

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

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

? Type = SecuritySchemeType.ApiKey

? });

? }

? });

? //Nuget--Swashbuckle.AspNetCore.Newtonsoft

? services.AddSwaggerGenNewtonsoftSupport();

? }

? #endregion

? }

? ///

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

? ///

? /// 摘要:

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

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

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

? ///

? ///

? public class CustomApiVersion

? {

? ///

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

? ///

? /// 摘要:

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

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

? /// ? ? 在由于前端版本迭代,而需要更新Api控制器方法時(shí),為了兼容舊的前端就需要“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”面,如上圖所示

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

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


當(dāng)前名稱:第10章Swagger自定義實(shí)現(xiàn)index.html頁-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://weahome.cn/article/igogp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部