之前用.net5.0寫webapi,自動集成swagger,非常方便。asp.net mvc沒有自動集成swagger,但是手動配置swagger也很簡單。 1、nuget引用Swashbuckle庫,安裝完後,App_Start下自動多了一個SwaggerConfig.cs; 2、打開Swagge ...
之前用.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
本文來自博客園,作者:GIS民工,轉載請註明原文鏈接:https://www.cnblogs.com/kook2007/p/16151357.html