WebApi Swagger實現多版本控制

2021-08-21 14:43:25 字數 3640 閱讀 3858

效果圖如下:

開啟管理nuget程式包新增swashbuckle

//只讀取一次

if (!_cache.trygetvalue(cachekey, out srcdoc))

patht.add(string.join("/", arr), item.value);

}srcdoc.paths = patht;

hashsetmodulelist = new hashset();

srcdoc.vendorextensions = new dictionary,

};_cache.tryadd(cachekey, srcdoc);

}return srcdoc;

}/// /// 從api文件中讀取控制器描述

///

/// 所有控制器描述

public static concurrentdictionarygetcontrollerdesc(hashsetmodulelist)}}

}}return controllerdescdict;}}

swaggerconfig類中新增如下配置:

配置多版本

public class swaggerversionhelper

}[attributeusage(attributetargets.all)]

public class versionedroute : attribute

public string name

public int version

}

c.multipleapiversions(

(apidesc, targetapiversion) => swaggerversionhelper.resolveversionsupportbyrouteconstraint(apidesc, targetapiversion),

(vc) =>

);

配置返回引數

c.customprovider((defaultprovider) => new cachingswaggerprovider(defaultprovider));
新增注釋c.includexmlcomments(path);

c.includexmlcomments(path);

c.includexmlcomments(path);

新增versioncontrollerselector

類用於實現多版控制器:

webapiconfig類中新增如下**

測試**如下:

namespace brnmall.web.areas.web.controllers.v1

}namespace brnmall.web.areas.web.controllers.v2

}namespace brnmall.web.areas.web.controllers.v3

}

到此就大功告成!!

介面 web api Swagger 檔案上傳

原文 原文 原文 原文 attributeusage attributetargets.method 取消注釋 c.operationfilter 修改為c.operationfilter 不知道為什麼,先暫時跳過,以後有時間再仔細了解 乙個不是很好的解決方式,但可以解決該問題。以後有時候再找找問題...

快速排序演算法實現(遞迴實現 棧實現)

基本思想 選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。分析 快速排序是不穩定的排序。快速排序的時間複...

介面實現與配置實現

在實現系統功能的時候,通常會首先定義好功能的介面,在系統功能不斷被實現的過程中,慢慢的發現有些介面的實現很類似,這個時候通常會開始做一次抽象,形 成乙個共同的部分,慢慢的系統形成了乙個抽象的層次,而為了通用,通常是通過定義介面,形成乙個抽象類,抽象類中暴露出一些抽象方法供外部擴充套件實 現,逐步的積...