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

.net framework中webapi使用swagger進(jìn)行接口文檔展示

這篇具有很好參考價(jià)值的文章主要介紹了.net framework中webapi使用swagger進(jìn)行接口文檔展示。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

第一步:在nuget程序包管理中搜索“Swashbuckle”包,然后進(jìn)行安裝(注:如果是.net core api請(qǐng)安裝Sawshbuckle aspnetcore)。

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

第二步:打開項(xiàng)目App_Start文件夾,修改SwaggerConfig.cs配置文件

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

我這里僅僅是修改swagger文檔的標(biāo)題

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

第三步:創(chuàng)建主項(xiàng)目的xml注釋文檔:

右鍵項(xiàng)目→屬性→生成→選中下方的 "XML文檔文件" 然后保存

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

如果是其他類庫(kù)項(xiàng)目,比如實(shí)體類庫(kù),用于創(chuàng)建接口請(qǐng)求參數(shù)實(shí)體或返回參數(shù)實(shí)體項(xiàng)目,需要在swagger文檔中展示備注時(shí),可在啟動(dòng)項(xiàng)中添加配置:

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

c.IncludeXmlComments(XmlCommentsHelper.XmlCommentsPath);

c.IncludeXmlComments(XmlCommentsHelper.ModelXmlCommentsPath);

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

    /// <summary>
    /// 需要展示在swagger文檔中實(shí)體XML路徑
    /// </summary>
    public class XmlCommentsHelper
    {


        /// <summary>
        /// XML注釋路徑
        /// </summary>
        public static string XmlCommentsPath
        {
            get
            {
                string path = string.Format("{0}/bin/MustWinLotteryWebApi.xml", System.AppDomain.CurrentDomain.BaseDirectory);
                return path;
            }
        }

        /// <summary>
        /// 模型XML注釋路徑
        /// </summary>
        public static string ModelXmlCommentsPath
        {
            get
            {
                string path = string.Format("{0}/bin/MustWinLotteryWebApi.Model.xml", System.AppDomain.CurrentDomain.BaseDirectory);
                return path;
            }
        }
    }

完成以上操作后,可直接啟動(dòng)webapi項(xiàng)目,然后在接口地址后面輸入 /swagger ? (默認(rèn)是英文的,如果需要中文顯示 ?還需要做漢化處理)

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

以下是對(duì)swagger文檔進(jìn)行漢化處理方法:

第一步:在nuget程序包管理中搜索“Swagger.Net”包和“Swagger.Net.UI”,然后進(jìn)行安裝。

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

第二步:安裝完成后,注釋掉SwaggerNet類中的assembly

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

第三步:創(chuàng)建一個(gè)“SwaggerControllerDescProvider”類,用于對(duì)swagger文檔中的內(nèi)容進(jìn)行漢化處理。

    /// <summary>
    /// swagger顯示控制器的描述
    /// </summary>
    public class SwaggerControllerDescProvider : ISwaggerProvider
    {
        private readonly ISwaggerProvider _swaggerProvider;
        private static ConcurrentDictionary<string, SwaggerDocument> _cache = new ConcurrentDictionary<string, SwaggerDocument>();
        private readonly string _xml;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="swaggerProvider"></param>
        /// <param name="xml">xml文檔路徑</param>
        public SwaggerControllerDescProvider(ISwaggerProvider swaggerProvider, string xml)
        {
            _swaggerProvider = swaggerProvider;
            _xml = xml;
        }

        public SwaggerDocument GetSwagger(string rootUrl, string apiVersion)
        {
            var cacheKey = string.Format("{0}_{1}", rootUrl, apiVersion);
            SwaggerDocument srcDoc = null;
            //只讀取一次
            if (!_cache.TryGetValue(cacheKey, out srcDoc))
            {
                srcDoc = _swaggerProvider.GetSwagger(rootUrl, apiVersion);

                srcDoc.vendorExtensions = new Dictionary<string, object> { { "ControllerDesc", GetControllerDesc() } };
                _cache.TryAdd(cacheKey, srcDoc);
            }
            return srcDoc;
        }

        /// <summary>
        /// 從API文檔中讀取控制器描述
        /// </summary>
        /// <returns>所有控制器描述</returns>
        public ConcurrentDictionary<string, string> GetControllerDesc()
        {
            string xmlpath = _xml;
            ConcurrentDictionary<string, string> controllerDescDict = new ConcurrentDictionary<string, string>();
            if (File.Exists(xmlpath))
            {
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(xmlpath);
                string type = string.Empty, path = string.Empty, controllerName = string.Empty;

                string[] arrPath;
                int length = -1, cCount = "Controller".Length;
                XmlNode summaryNode = null;
                foreach (XmlNode node in xmldoc.SelectNodes("http://member"))
                {
                    type = node.Attributes["name"].Value;
                    if (type.StartsWith("T:"))
                    {
                        //控制器
                        arrPath = type.Split('.');
                        length = arrPath.Length;
                        controllerName = arrPath[length - 1];
                        if (controllerName.EndsWith("Controller"))
                        {
                            //獲取控制器注釋
                            summaryNode = node.SelectSingleNode("summary");
                            string key = controllerName.Remove(controllerName.Length - cCount, cCount);
                            if (summaryNode != null && !string.IsNullOrEmpty(summaryNode.InnerText) && !controllerDescDict.ContainsKey(key))
                            {
                                controllerDescDict.TryAdd(key, summaryNode.InnerText.Trim());
                            }
                        }
                    }
                }
            }
            return controllerDescDict;
        }
    }

第四步:在SwaggerUI文件夾中,創(chuàng)建一個(gè)swagger_lang.js的js,用于對(duì)swagger進(jìn)行漢化處理(注:這個(gè)文件必須添加,否則漢化將失?。?/p>

swagger_lang.js 文件中的js內(nèi)容如下:

/// <summary>
/// 中文轉(zhuǎn)換
/// </summary>
var SwaggerTranslator = (function () {
    //定時(shí)執(zhí)行檢測(cè)是否轉(zhuǎn)換成中文,最多執(zhí)行500次  即500*50/1000=25s
    var iexcute = 0,
        //中文語(yǔ)言包
        _words = {
            "Warning: Deprecated": "警告:已過(guò)時(shí)",
            "Implementation Notes": "實(shí)現(xiàn)備注",
            "Response Class": "響應(yīng)類",
            "Status": "狀態(tài)",
            "Parameters": "參數(shù)",
            "Parameter": "參數(shù)",
            "Value": "值",
            "Description": "描述",
            "Parameter Type": "參數(shù)類型",
            "Data Type": "數(shù)據(jù)類型",
            "Response Messages": "響應(yīng)消息",
            "HTTP Status Code": "HTTP狀態(tài)碼",
            "Reason": "原因",
            "Response Model": "響應(yīng)模型",
            "Request URL": "請(qǐng)求URL",
            "Response Body": "響應(yīng)體",
            "Response Code": "響應(yīng)碼",
            "Response Headers": "響應(yīng)頭",
            "Hide Response": "隱藏響應(yīng)",
            "Headers": "頭",
            "Try it out!": "試一下!",
            "Show/Hide": "顯示/隱藏",
            "List Operations": "顯示操作",
            "Expand Operations": "展開操作",
            "Raw": "原始",
            "can't parse JSON.  Raw result": "無(wú)法解析JSON. 原始結(jié)果",
            "Model Schema": "模型架構(gòu)",
            "Model": "模型",
            "apply": "應(yīng)用",
            "Username": "用戶名",
            "Password": "密碼",
            "Terms of service": "服務(wù)條款",
            "Created by": "創(chuàng)建者",
            "See more at": "查看更多:",
            "Contact the developer": "聯(lián)系開發(fā)者",
            "api version": "api版本",
            "Response Content Type": "響應(yīng)Content Type",
            "fetching resource": "正在獲取資源",
            "fetching resource list": "正在獲取資源列表",
            "Explore": "瀏覽",
            "Show Swagger Petstore Example Apis": "顯示 Swagger Petstore 示例 Apis",
            "Can't read from server.  It may not have the appropriate access-control-origin settings.": "無(wú)法從服務(wù)器讀取??赡軟]有正確設(shè)置access-control-origin。",
            "Please specify the protocol for": "請(qǐng)指定協(xié)議:",
            "Can't read swagger JSON from": "無(wú)法讀取swagger JSON于",
            "Finished Loading Resource Information. Rendering Swagger UI": "已加載資源信息。正在渲染Swagger UI",
            "Unable to read api": "無(wú)法讀取api",
            "from path": "從路徑",
            "Click to set as parameter value": "點(diǎn)擊設(shè)置參數(shù)",
            "server returned": "服務(wù)器返回"
        },

        //定時(shí)執(zhí)行轉(zhuǎn)換
        _translator2Cn = function () {
            if ($("#resources_container .resource").length > 0) {
                _tryTranslate();
            }

            if ($("#explore").text() == "Explore" && iexcute < 500) {
                iexcute++;
                setTimeout(_translator2Cn, 50);
            }
        },

        //設(shè)置控制器注釋
        _setControllerSummary = function () {
            $.ajax({
                type: "get",
                async: true,
                url: $("#input_baseUrl").val(),
                dataType: "json",
                success: function (data) {
                    var summaryDict = data.ControllerDesc;
                    var id, controllerName, strSummary;
                    $("#resources_container .resource").each(function (i, item) {
                        id = $(item).attr("id");
                        if (id) {
                            controllerName = id.substring(9);
                            strSummary = summaryDict[controllerName];
                            if (strSummary) {
                                var option = $(item).children(".heading").children(".options");
                                if ($(option).children(".controller-summary").length > 0) {
                                    $(option).children(".controller-summary").remove();
                                }
                                $(option).prepend('<li class="controller-summary" title="' + strSummary + '">' + strSummary + '</li>');
                            }
                        }
                    });
                }
            });
        },

        //嘗試將英文轉(zhuǎn)換成中文
        _tryTranslate = function () {
            $('[data-sw-translate]').each(function () {
                $(this).html(_getLangDesc($(this).html()));
                $(this).val(_getLangDesc($(this).val()));
                $(this).attr('title', _getLangDesc($(this).attr('title')));
            });
        },
        _getLangDesc = function (word) {
            return _words[$.trim(word)] !== undefined ? _words[$.trim(word)] : word;
        };

    return {
        Translator: function () {
            $("#logo").html("公司名稱").attr("href", "http://www.xx.com");
            $('body').append('<style type="text/css">.controller-summary{color:#10a54a !important;word-break:keep-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:250px;text-align:right;cursor:default;} </style>');
            //設(shè)置控制器描述
            _setControllerSummary();
            _translator2Cn();
        },
        translate: function () {
            this.Translator();
        }
    }
})();
//執(zhí)行轉(zhuǎn)換
SwaggerTranslator.Translator();

這里需要注意,新增的swagger_lang.js文件需要修改文件屬性,將文件生成操作修改為“嵌入的資源”。

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

第五步:將創(chuàng)建的swagger_lang.js在SwaggerConfig文件中進(jìn)行引用:

.net framework中webapi使用swagger進(jìn)行接口文檔展示,.net,c#,framework,webapi使用swagger

c.InjectJavaScript(thisAssembly, "MustWinLotteryWebApi.SwaggerUI.swagger_lang.js");  //引用中文包

以上就是我對(duì)“.net framework中webapi使用swagger進(jìn)行接口文檔展示”的實(shí)現(xiàn)方式及漢化方式的整理,希望對(duì)各位碼友有幫助。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-726750.html

到了這里,關(guān)于.net framework中webapi使用swagger進(jìn)行接口文檔展示的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(一)

    從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(一)

    1、雙擊打開VS2022。 2、單擊“創(chuàng)建新項(xiàng)目”,如下圖。 3、選擇“ASP.NET Core Web API”類型,然后單擊“下一步”,如下圖。 4、“項(xiàng)目名稱”此處填寫為“AllTestDemo”;“位置”此處放在E盤根目錄;“解決方案名稱”此處默認(rèn)與“項(xiàng)目名稱”保持一致;不勾選“將解決方案和項(xiàng)

    2023年04月11日
    瀏覽(30)
  • 從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(二)

    從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(二)

    傳送門:從0到1手把手教你ASP.NET Core Web API項(xiàng)目配置接口文檔Swagger(一) 我們雖然可以在輸入 /swagger 后順利的訪問(wèn) Swagger UI 頁(yè)面,但是我們發(fā)現(xiàn)每次運(yùn)行項(xiàng)目都會(huì)默認(rèn)訪問(wèn) /weatherforecast 這個(gè)接口,想要將啟動(dòng)頁(yè)設(shè)為 /swagger (或者其他頁(yè)面)就需要用到配置文件 launchSettings.

    2023年04月12日
    瀏覽(34)
  • Swagger接口文檔的導(dǎo)出使用

    Swagger接口文檔的導(dǎo)出使用

    1.配置項(xiàng)目swagger2 幫助網(wǎng)站:https://blog.csdn.net/xhmico/article/details/125353535 配置完成后,運(yùn)行項(xiàng)目,打開 http://localhost:8868/mike/swagger-ui.html# (注意端口) ,如下: 點(diǎn)擊紅圈鏈接,會(huì)生成 json 格式的接口文檔,如下圖: 2.生成文檔 點(diǎn)擊下方鏈接: 在線swagger轉(zhuǎn)word文檔|swagger導(dǎo)出w

    2024年02月09日
    瀏覽(27)
  • gin中使用swagger生成接口文檔

    gin中使用swagger生成接口文檔

    想要使用 gin-swagger 為你的代碼自動(dòng)生成接口文檔,一般需要下面三個(gè)步驟: 按照swagger要求給接口代碼添加聲明式注釋,具體參照聲明式注釋格式。 使用swag工具掃描代碼自動(dòng)生成API接口文檔數(shù)據(jù) 使用gin-swagger渲染在線接口文檔頁(yè)面 第一步:添加注釋 在程序入口main函數(shù)上以

    2024年01月25日
    瀏覽(17)
  • SpringBoot使用Swagger配置API接口文檔

    SpringBoot使用Swagger配置API接口文檔

    Swagger是一個(gè)用于設(shè)計(jì)、構(gòu)建和文檔化 RESTful API 的開源框架。它提供了一組工具,使得開發(fā)人員能夠更輕松地定義、描述和測(cè)試API接口。 具體來(lái)說(shuō),Swagger包含以下幾個(gè)核心組件: Swagger規(guī)范(Swagger Specification): 定義了一種格式化的API規(guī)范,使用YAML或JSON格式,用于描述API的各

    2024年02月05日
    瀏覽(27)
  • SpringBoot使用Swagger2生成接口文檔

    SpringBoot使用Swagger2生成接口文檔

    ? ? ? ? 通過(guò)一下配置,將Swagger2自動(dòng)配置進(jìn)SpringBoot中 ? ????????? 通過(guò)@Api注解和@ApiOperation注解說(shuō)明模塊作用及接口說(shuō)明。 ? ? ? ? 通過(guò)訪問(wèn)路徑http://localhost:8088/doc.html,說(shuō)明一下8088是我SpringBoot的端口號(hào),你們填你們自己的,不同版本的Swagger訪問(wèn)的路徑是不一樣的。

    2024年01月25日
    瀏覽(32)
  • .NET Core WebAPI項(xiàng)目部署iis后Swagger 404問(wèn)題解決

    .NET Core WebAPI項(xiàng)目部署iis后Swagger 404問(wèn)題解決

    之前做了一個(gè)WebAPI的項(xiàng)目,我在文章中寫到的是Docker方式部署,然后考慮到很多初學(xué)者用的是iis,下面講解下iis如何部署WebAPI項(xiàng)目。 iis ASPNETCoreModuleV2 重點(diǎn) .NET Core Runtime iis的配置這里就不講了,主要講解.NET Core項(xiàng)目部署之后Swagger無(wú)法訪問(wèn)問(wèn)題。 ASPNETCoreModuleV2 安裝: https:/

    2024年03月09日
    瀏覽(24)
  • 探索ASP.NET Framework WebAPI的簡(jiǎn)介與應(yīng)用

    探索ASP.NET Framework WebAPI的簡(jiǎn)介與應(yīng)用

    1.1-什么是WebAPI? WebAPI是一種用開發(fā)系統(tǒng)接口、設(shè)備接口API的技術(shù),基于Http協(xié)議,請(qǐng)求和返回格式默認(rèn)是Json格式。比WCF簡(jiǎn)單、更通用;比WebService更節(jié)省流量,更簡(jiǎn)潔。 1.2-WebAPI的特點(diǎn)? Action方法直接返回對(duì)象,專注于數(shù)據(jù) 更符合Restful的風(fēng)格 有利于獨(dú)立于IIS部署 Action可以直

    2024年02月14日
    瀏覽(27)
  • asp.net core6 webapi 使用反射批量注入接口層和實(shí)現(xiàn)接口層的接口的類到ioc中

    IBLL接口層類庫(kù) BLL實(shí)現(xiàn)接口層類庫(kù) program中利用反射批量注入 在控制器中使用構(gòu)造函數(shù)傳參就可以調(diào)用已經(jīng)注冊(cè)的所有是是實(shí)現(xiàn)接口的類了的實(shí)列了

    2024年02月13日
    瀏覽(24)
  • .Net Framework 4.6.1+版本的Winform程序開啟Web服務(wù),支持Http webapi

    .Net Framework 4.6.1+版本的Winform程序開啟Web服務(wù),支持Http webapi

    在很久以前為了滿足需求,已經(jīng)開發(fā)了一款winform程序,并且是4.6.1版本的,如今為了和第三方對(duì)接,需要在這個(gè)winform上提供WebAPI的接口。因?yàn)榈谌降某绦蚴且环輿]有源碼的程序。 網(wǎng)上有很多自寫web服務(wù)的功能,個(gè)人覺得過(guò)于麻煩,而且還要考慮一些路由規(guī)則什么的,太難

    2024年02月14日
    瀏覽(30)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包