国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Asp .Net Core 系列:基于 Swashbuckle.AspNetCore 包 集成 Swagger

這篇具有很好參考價(jià)值的文章主要介紹了Asp .Net Core 系列:基于 Swashbuckle.AspNetCore 包 集成 Swagger。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

什么是 Swagger?

Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。它提供了一種規(guī)范的方式來定義、構(gòu)建和文檔化 RESTful Web 服務(wù),使客戶端能夠發(fā)現(xiàn)和理解各種服務(wù)的功能。Swagger 的目標(biāo)是使部署管理和使用功能強(qiáng)大的 API 從未如此簡單。

Swagger 提供了一種基于 YAML 或 JSON 格式的規(guī)范語言,用于描述 RESTful Web 服務(wù)的元數(shù)據(jù),包括 API 的版本、資源、請求方法、參數(shù)、響應(yīng)等信息。通過使用 Swagger 工具,開發(fā)人員可以生成 API 文檔,并與可視化工具集成,提供了一個(gè)用戶友好的界面來測試和使用 API。

此外,Swagger 還提供了一些額外的功能,如 API 的版本控制、認(rèn)證和授權(quán)、API 的監(jiān)控和度量等。這些功能可以幫助開發(fā)人員更好地管理和維護(hù) RESTful Web 服務(wù)。

總之,Swagger 是一個(gè)強(qiáng)大的工具,可以幫助開發(fā)人員構(gòu)建、文檔化和使用 RESTful Web 服務(wù),提高 API 的開發(fā)效率和管理水平。

什么是 Swashbuckle.AspNetCore?

Swashbuckle.AspNetCore 是一個(gè)開源的 .NET 包,用于為 ASP.NET Core Web API 生成美觀的、交互式的 OpenAPI 文檔(以前稱為 Swagger)。它是一個(gè)強(qiáng)大的工具,可以幫助開發(fā)人員快速生成易于理解和使用的 API 文檔。

官網(wǎng):https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/README.md

Asp .Net Core 如何集成 Swagger?

要在 ASP.NET Core 項(xiàng)目中集成 Swashbuckle.AspNetCore,可以按照以下步驟進(jìn)行操作:

  1. 安裝 Swashbuckle.AspNetCore NuGet 包:

在 Visual Studio 中打開你的 ASP.NET Core 項(xiàng)目,并通過 NuGet 包管理器安裝 Swashbuckle.AspNetCore 包。

Install-Package Swashbuckle.AspNetCore
  1. 配置 Swashbuckle.AspNetCore:
    在 Startup.cs 文件的 ConfigureServices 方法中,注冊 Swashbuckle 服務(wù)。
            builder.Services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new OpenApiInfo
                {
                    Title = "訂單服務(wù)",
                    Version = "v2",
                    Description = "訂單服務(wù)描述",
                    Contact = new OpenApiContact
                    {
                        Name = "robin",
                        Email = "2545233857@qq.com"
                    },
                    License = new OpenApiLicense
                    {
                        Name = "MIT",
                        Url = new Uri("https://www.cnblogs.com/vic-tory")
                    },
                });

                // 設(shè)置排序
                options.OrderActionsBy((apiDesc) => $"{apiDesc.ActionDescriptor.RouteValues["controller"]}_{apiDesc.HttpMethod}");

                //設(shè)置
                var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SwaggerDemo.xml");

                options.IncludeXmlComments(filePath);
            });

更改 Swagger JSON 端點(diǎn)的路徑

默認(rèn)情況下,Swagger JSON 將在以下路由中公開 - “/swagger/{documentName}/swagger.json”。如有必要,您可以在啟用 Swagger 中間件時(shí)更改此設(shè)置。自定義路由必須包含該{documentName}參數(shù)。

app.UseSwagger(c =>
{
    c.RouteTemplate = "api-docs/{documentName}/swagger.json";
});

注意:如果您使用 SwaggerUI 中間件,您還需要更新其配置以反映新端點(diǎn):

app.UseSwaggerUI(c =>
{
   c.RoutePrefix = "swagger"; //指定路由前綴
   c.SwaggerEndpoint("/api-docs/v1/swagger.json", "order api v1");
})

Asp .Net Core 系列:基于 Swashbuckle.AspNetCore 包 集成 Swagger,.netcore

包含 XML 注釋中的描述

為了通過人性化的描述來增強(qiáng)生成的文檔,您可以使用 Xml 注釋來注釋控制器操作和模型,并配置 Swashbuckle 將這些注釋合并到輸出的 Swagger JSON 中:

打開項(xiàng)目的“屬性”對話框,單擊“構(gòu)建”選項(xiàng)卡并確保選中“XML 文檔文件”,或者將true元素添加到.csproj 項(xiàng)目文件的部分。這將在構(gòu)建時(shí)生成一個(gè)包含所有 XML 注釋的文件。

此時(shí),任何未使用 XML 注釋進(jìn)行注釋的類或方法都將觸發(fā)構(gòu)建警告。要抑制這種情況,請?jiān)趯傩詫υ捒虻摹耙种凭妗弊侄沃休斎刖娲a“1591”,或添加1591到.csproj 項(xiàng)目文件的部分。

配置 Swashbuckle 將文件上的 XML 注釋合并到生成的 Swagger JSON 中:

                var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SwaggerDemo.xml");

                options.IncludeXmlComments(filePath);

方法上

        /// <summary>
        /// 獲取天氣
        /// </summary>
        /// <param name="param">參數(shù)</param>
        /// <returns>返回一個(gè)天氣集合</returns>
        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get(string param)
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }

Asp .Net Core 系列:基于 Swashbuckle.AspNetCore 包 集成 Swagger,.netcore

添加 Jwt 驗(yàn)證

                options.AddSecurityDefinition("bearerAuth", new OpenApiSecurityScheme
                                                            {
                                                                Type = SecuritySchemeType.Http,
                                                                Scheme = "bearer",
                                                                BearerFormat = "JWT",
                                                                Description = "請輸入Jwt 字符串"
                                                            });


                options.AddSecurityRequirement(new OpenApiSecurityRequirement
                                              {
                                                  {
                                                      new OpenApiSecurityScheme
                                                      {
                                                          Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "bearerAuth" }
                                                      },
                                                      new string[] {}
                                                  }
                                              });

Asp .Net Core 系列:基于 Swashbuckle.AspNetCore 包 集成 Swagger,.netcore

第三方包

Package Description
Swashbuckle.AspNetCore.Filters Some useful Swashbuckle filters which add additional documentation, e.g. request and response examples, authorization information, etc. See its Readme for more details
Unchase.Swashbuckle.AspNetCore.Extensions Some useful extensions (filters), which add additional documentation, e.g. hide PathItems for unaccepted roles, fix enums for client code generation, etc. See its Readme for more details
MicroElements.Swashbuckle.FluentValidation Use FluentValidation rules instead of ComponentModel attributes to augment generated Swagger Schemas
MMLib.SwaggerForOcelot Aggregate documentations over microservices directly on Ocelot API Gateway

封裝 Swagger 擴(kuò)展

SwaggerServiceExtensions

    /// <summary>
    /// Swagger 服務(wù)擴(kuò)展
    /// </summary>
    public static class SwaggerServiceExtensions
    {
        /// <summary>
        /// 添加 Swagger 服務(wù)
        /// </summary>
        /// <param name="services"></param>
        /// <param name="swaggerOptions"></param>
        /// <returns></returns>
        public static IServiceCollection AddMCodeSwagger(this IServiceCollection services, SwaggerOptions swaggerOptions)
        {
            services.AddSingleton(swaggerOptions);

            SwaggerGenServiceCollectionExtensions.AddSwaggerGen(services, c =>
            {
                c.SwaggerDoc(swaggerOptions.ServiceName, swaggerOptions.ApiInfo);

                if (swaggerOptions.XmlCommentFiles != null)
                {
                    foreach (string xmlCommentFile in swaggerOptions.XmlCommentFiles)
                    {
                        string str = Path.Combine(AppContext.BaseDirectory, xmlCommentFile);
                        if (File.Exists(str)) c.IncludeXmlComments(str, true);
                    }
                }

                SwaggerGenOptionsExtensions.CustomSchemaIds(c, x => x.FullName);

                c.AddSecurityDefinition("bearerAuth", new OpenApiSecurityScheme
                {
                    Type = SecuritySchemeType.Http,
                    Scheme = "bearer",
                    BearerFormat = "JWT",
                    Description = "請輸入 bearer 認(rèn)證"
                });


                c.AddSecurityRequirement(new OpenApiSecurityRequirement
                                              {
                                                  {
                                                      new OpenApiSecurityScheme
                                                      {
                                                          Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "bearerAuth" }
                                                      },
                                                      new string[] {}
                                                  }
                                              });
            });

            return services;
        }

        /// <summary>
        /// 使用 Swagger UI
        /// </summary>
        /// <param name="app"></param>
        /// <returns></returns>
        public static IApplicationBuilder UseMCodeSwagger(this IApplicationBuilder app)
        {
            string serviceName = app.ApplicationServices.GetRequiredService<SwaggerOptions>().ServiceName;

            SwaggerUIBuilderExtensions.UseSwaggerUI(SwaggerBuilderExtensions.UseSwagger(app), c =>
            {
                c.SwaggerEndpoint("/swagger/" + serviceName + "/swagger.json", "api." + serviceName);
            });
            return app;
        }
    }

SwaggerOptions文章來源地址http://www.zghlxwxcb.cn/news/detail-800179.html

    /// <summary>
    /// Swagger配置
    /// </summary>
    public class SwaggerOptions
    {
        /// <summary>
        /// 服務(wù)名稱
        /// </summary>
        public string ServiceName { get; set; }

        /// <summary>
        /// API信息
        /// </summary>
        public OpenApiInfo ApiInfo { get; set; }

        /// <summary>
        /// Xml注釋文件
        /// </summary>
        public string[] XmlCommentFiles { get; set; }

        /// <summary>
        /// 構(gòu)造函數(shù)
        /// </summary>
        /// <param name="serviceName">服務(wù)名稱</param>
        /// <param name="apiInfo">API信息</param>
        /// <param name="xmlCommentFiles">Xml注釋文件</param>
        public SwaggerOptions(string serviceName, OpenApiInfo apiInfo, string[] xmlCommentFiles = null)
        {
            ServiceName = !string.IsNullOrWhiteSpace(serviceName) ? serviceName : throw new ArgumentException("serviceName parameter not config.");
            ApiInfo = apiInfo;
            XmlCommentFiles = xmlCommentFiles;
        }
    }

到了這里,關(guān)于Asp .Net Core 系列:基于 Swashbuckle.AspNetCore 包 集成 Swagger的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ASP.NET Core 配置系列一

    ASP.NET Core 配置系列一

    A S P . N E T ? C o r e ? 配 置 主 要 通 過 這 3 個(gè) 文 件 設(shè) 置 : 1 ? 項(xiàng) 目 文 件 也 叫 . c s p r o j ? 文 件 2 ? P r o g r a m . c s 3 ? a p p s e t t i n g s . j s o n 這 些 配 置 告 訴 A S P . N E T ? C o r e ? 應(yīng) 用 程 序 基 于 用 戶 的 交 互 是 如 何 工 作 的, 在 本 節(jié) 中 我 們 理 解 A S P .

    2024年02月03日
    瀏覽(99)
  • Asp.net Core系列學(xué)習(xí)(1)

    ASP.NET Core 是一個(gè)跨平臺(tái)的高性能開源 框架 ,用于生成啟用云且連接 Internet 的新式應(yīng)用。 使用 ASP.NET Core,可以: 生成 Web 應(yīng)用和服務(wù)、物聯(lián)網(wǎng) (IoT) 應(yīng)用和移動(dòng)后端。 在 Windows、macOS 和 Linux 上使用喜愛的開發(fā)工具。 部署到云或本地。 在 .NET Core 上運(yùn)行。 ASP.NET Core 是對 ASP

    2024年02月06日
    瀏覽(93)
  • ASP.NET Core 依賴注入系列一

    ASP.NET Core 依賴注入系列一

    什么是ASP.NET Core 依賴注入? 依賴注入也稱DI是一項(xiàng)技術(shù)用來實(shí)現(xiàn)對象松耦合以至于應(yīng)用程序更容易維護(hù),ASP.NET Core通過控制器的構(gòu)造函數(shù)自動(dòng)注入依賴的對象,我們創(chuàng)建ASP.NET Core MVC應(yīng)用程序演示依賴注入特性是如何工作, 在這節(jié)中我們講解該特性 1 例子 我們創(chuàng)建一個(gè)ASP.NET C

    2024年02月11日
    瀏覽(98)
  • 實(shí)戰(zhàn)指南:使用 xUnit 和 ASP.NET Core 進(jìn)行集成測試【完整教程】

    實(shí)戰(zhàn)指南:使用 xUnit 和 ASP.NET Core 進(jìn)行集成測試【完整教程】

    集成測試可在包含應(yīng)用支持基礎(chǔ)結(jié)構(gòu)(如數(shù)據(jù)庫、文件系統(tǒng)和網(wǎng)絡(luò))的級(jí)別上確保應(yīng)用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機(jī)和內(nèi)存中測試服務(wù)器結(jié)合使用來支持集成測試。 集成測試與單元測試相比,能夠在更廣泛的級(jí)別上評(píng)估應(yīng)用的組件,確認(rèn)多個(gè)

    2024年04月22日
    瀏覽(30)
  • ASP.NET Core SignalR 系列(二)- 中心(服務(wù)端)

    ASP.NET Core SignalR 系列(二)- 中心(服務(wù)端)

    本章將和大家分享 ASP.NET Core SignalR 中的中心(服務(wù)端)。 本文大部分內(nèi)容摘自微軟官網(wǎng):https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hubs?view=aspnetcore-7.0 廢話不多說,我們直接來看一個(gè)Demo,Demo的目錄結(jié)構(gòu)如下所示: 本Demo的Web項(xiàng)目為ASP.NET Core Web 應(yīng)用程序( 目標(biāo)框架為.NET 7.0

    2024年02月13日
    瀏覽(94)
  • ASP.NET Core SignalR 系列(四)- 中心篩選器

    本章將和大家分享 ASP.NET Core SignalR 中的中心篩選器。 本文大部分內(nèi)容摘自微軟官網(wǎng):https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hub-filters?view=aspnetcore-7.0 廢話不多說,下面我們直接進(jìn)入本章主題。 中心篩選器: 在 ASP.NET Core 5.0 或更高版本中可用。 允許在客戶端調(diào)用中心方法之

    2024年02月16日
    瀏覽(100)
  • 你所不知道的ASP.NET Core進(jìn)階系列(三)

    你所不知道的ASP.NET Core進(jìn)階系列(三)

    一年多沒更新博客,上一次寫此系列還是四年前,雖遲但到,沒有承諾,主打隨性,所以不存在斷更,催更,哈哈,上一篇我們細(xì)究從請求到綁定詳細(xì)原理,本篇?jiǎng)t是探討模型綁定細(xì)節(jié),當(dāng)一個(gè)問題產(chǎn)生到最終解決時(shí),回過頭我們整體分析其產(chǎn)生背景以及設(shè)計(jì)思路才能有所獲

    2024年02月05日
    瀏覽(436)
  • 使用 Asp.net core webapi 集成配置系統(tǒng),提高程序的靈活和可維護(hù)性

    使用 Asp.net core webapi 集成配置系統(tǒng),提高程序的靈活和可維護(hù)性

    集成配置系統(tǒng)的主要目的是將應(yīng)用程序的配置信息與代碼分離,使得配置信息可以在不需要修改代碼的情況下進(jìn)行更改。這樣可以提高應(yīng)用程序的靈活性和可維護(hù)性。 ASP.NET Core 提供了一種靈活的配置系統(tǒng),可以輕松地將配置信息從不同的來源加載到應(yīng)用程序中,并且可以根

    2024年02月01日
    瀏覽(30)
  • ASP.NET Core SignalR 系列(三)- JavaScript 客戶端

    ASP.NET Core SignalR 系列(三)- JavaScript 客戶端

    本章將和大家分享 ASP.NET Core SignalR 中的 JavaScript 客戶端。ASP.NET Core SignalR JavaScript 客戶端庫使開發(fā)人員能夠調(diào)用服務(wù)器端SignalR中心代碼。 本文大部分內(nèi)容摘自微軟官網(wǎng):https://learn.microsoft.com/zh-cn/aspnet/core/signalr/javascript-client?view=aspnetcore-7.0tabs=visual-studio 廢話不多說,下面我們

    2024年02月15日
    瀏覽(99)
  • ASP.NET Core 3.1系列(13)——本地緩存MemoryCache的使用

    ASP.NET Core 3.1系列(13)——本地緩存MemoryCache的使用

    在實(shí)際開發(fā)過程中,緩存( Cache )是一項(xiàng)重要技術(shù)。有時(shí)候?yàn)榱司徑鈹?shù)據(jù)庫訪問的壓力,我們可以將一些需要經(jīng)常讀取但又幾乎不會(huì)變化的數(shù)據(jù)存在緩存里,以此加快數(shù)據(jù)的訪問速度。在 ASP.NET Core 中,緩存一般分為本地緩存和分布式緩存。相較于分布式緩存( Redis ),本地

    2024年02月05日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包