1.在項目中直接引用swagger nuget包,引入Swashbuckle一個包即可
2.直接運行,會報錯
報錯信息:Not supported by Swagger 2.0: Multiple operations with path ‘xxxx.aspx’ and method 'POST'
解決辦法:
第一步:找到SwaggerConfig頁面,引用:using System.Linq;
第二步:
找到大概175行的代碼,是注釋狀態,取消注釋。再執行可以解決。
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
3.可以運行了,在默認地址后加“/swagger/ui/index”或者“/swagger”
這時候存在兩個問題,但是不影響功能,以下問題不處理也可以。
a.沒有注釋
解決辦法:項目屬性->生成,勾選生成xml文檔文件(有些太古老的WebSite項目不支持注釋功能,因為根本沒有生成xml這一個選項)
修改SwaggerConfig文件
c.IncludeXmlComments(GetXmlCommentsPath());
//引入xml注釋
protected static string GetXmlCommentsPath()
{
return string.Format(@"{0}\bin\xxxxxx.xml", AppDomain.CurrentDomain.BaseDirectory);
}
b.沒有漢化
在SwaggerConfig配置文件中有這么一段代碼
//c.InjectJavaScript(thisAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js")
這個js文件一定要嵌入:找到文件--屬性--生成操作--嵌入的資源
這段代碼的作用是向頁面輸出引用Swashbuckle.Dummy.SwaggerExtensions.testScript1.js文件,或許會疑問js文件路徑為什么這么奇怪。那是因為Swagger將資源文件都嵌入到dll中了,我們常用的資源文件都是以內容的方式放在項目中的,我們也可以以嵌入的資源方式引入到項目中
//c.InjectJavaScript(thisAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js"); //路徑規則=========項目命名空間.文件夾名稱.js文件名稱 c.InjectJavaScript(thisAssembly, "BWebFoowwSoftStatistic.Content.js.SwaggerUI.Swagger_lang.js");
在以上路徑位置添加js,js內容如下:
/// <summary>
/// 中文轉換
/// </summary>
var SwaggerTranslator = (function () {
//定時執行檢測是否轉換成中文,最多執行500次 即500*50/1000=25s
var iexcute = 0,
//中文語言包
_words = {
"Warning: Deprecated": "警告:已過時",
"Implementation Notes": "實現備注",
"Response Class": "響應類",
"Status": "狀態",
"Parameters": "參數",
"Parameter": "參數",
"Value": "值",
"Description": "描述",
"Parameter Type": "參數類型",
"Data Type": "數據類型",
"Response Messages": "響應消息",
"HTTP Status Code": "HTTP狀態碼",
"Reason": "原因",
"Response Model": "響應模型",
"Request URL": "請求URL",
"Response Body": "響應體",
"Response Code": "響應碼",
"Response Headers": "響應頭",
"Hide Response": "隱藏響應",
"Headers": "頭",
"Try it out!": "試一下!",
"Show/Hide": "顯示/隱藏",
"List Operations": "顯示操作",
"Expand Operations": "展開操作",
"Raw": "原始",
"can't parse JSON. Raw result": "無法解析JSON. 原始結果",
"Model Schema": "模型架構",
"Model": "模型",
"apply": "應用",
"Username": "用戶名",
"Password": "密碼",
"Terms of service": "服務條款",
"Created by": "創建者",
"See more at": "查看更多:",
"Contact the developer": "聯系開發者",
"api version": "api版本",
"Response Content Type": "響應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.": "無法從服務器讀取。可能沒有正確設置access-control-origin。",
"Please specify the protocol for": "請指定協議:",
"Can't read swagger JSON from": "無法讀取swagger JSON于",
"Finished Loading Resource Information. Rendering Swagger UI": "已加載資源信息。正在渲染Swagger UI",
"Unable to read api": "無法讀取api",
"from path": "從路徑",
"Click to set as parameter value": "點擊設置參數",
"server returned": "服務器返回"
},
//定時執行轉換
_translator2Cn = function () {
if ($("#resources_container .resource").length > 0) {
_tryTranslate();
}
if ($("#explore").text() == "Explore" && iexcute < 500) {
iexcute++;
setTimeout(_translator2Cn, 50);
}
},
//設置控制器注釋
_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) {
$(item).children(".heading").children(".options").prepend('<li class="controller-summary" title="' + strSummary + '">' + strSummary + '</li>');
}
}
});
}
});
},
//嘗試將英文轉換成中文
_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 () {
document.title = "API描述文檔";
$('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>');
$("#logo").html("接口描述").attr("href", "/Home/Index");
//設置控制器描述
_setControllerSummary();
_translator2Cn();
}
}
})();
//執行轉換
SwaggerTranslator.Translator();
運行,成功!
參考:
http://www.rzrgm.cn/w5942066/p/10831381.html
http://www.rzrgm.cn/liaods/p/10101513.html
http://www.rzrgm.cn/94pm/p/8046580.html
https://blog.csdn.net/aaa002002/article/details/101454003
浙公網安備 33010602011771號