之前用.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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/458251.html
標籤:.NET技术
