1. 程式人生 > 其它 >asp.net mvc 整合swagger並漢化文件

asp.net mvc 整合swagger並漢化文件

之前用.net5.0寫webapi,自動整合swagger,非常方便。asp.net mvc沒有自動整合swagger,但是手動配置swagger也很簡單。
1、nuget引用Swashbuckle庫,安裝完後,App_Start下自動多了一個SwaggerConfig.cs;
2、開啟SwaggerConfing.cs,
c.SingleApiVersion("v1", "××系統API"); 這行是標記api的名字
c.IncludeXmlComments(GetXmlCommentsPath()); 這行是載入xml描述
c.CustomProvider((defaultProvider) => new SwaggerCacheProvider(defaultProvider, string.Format(@"{0}\bin\WRSServices.XML", System.AppDomain.CurrentDomain.BaseDirectory)));

這行是漢化用的,這個provider裡是按照類的summary和xml的member標記解析類,用於解析swagger的模型等,
c.InjectJavaScript(System.Reflection.Assembly.GetExecutingAssembly(), "×××.××.swagger_chs.js");這行是載入swagger漢化的js,js檔案屬性改為嵌入式資源,js前面以namespace和js所在資料夾的位置為類名稱。

注意:
1、專案的屬性-【生成】,需要勾上XML文件檔案;
2、釋出時專案的XML文件檔案不會自動釋出,需要從bin裡拷貝到釋出後文件中;
3、要想響應類模型有解析,需要在api方法前加上ResponseType特性,如:
[ResponseType(typeof(×××.×××.ClassName))]


4、api的控制器中不要有泛型類,否則,編譯成功,但swagger頁面會報錯,因為swagger是一開始就需要明確型別,泛型是執行時才知道真是型別,如果需要通過泛型去做一些模式重構的話,可以把泛型的方法單獨拎出來,放到helper或公共類裡。

SwaggerCacheProvider和swagger的漢化js,網上很多。比如:https://blog.csdn.net/qq_25405005/article/details/89384555