IT輪子系列(三)——如何顯示方法名——Swagger的使用(三)


前言

在上一篇文章IT輪子系列(三)——如何給返回類型添加注釋——Swagger的使用(二) 介紹如何使用swashbuckle的時候忽略了一個問題,就是默認創建的API項目在生成文檔的時候是沒有顯示方法名,只顯示了控制器的名字。如下圖:

User 控制器代碼如下:

 1     public class UserController : BaseController
 2     {
 3         /// <summary>
 4         /// 獲取用戶信息
 5         /// </summary>
 6         /// <param name="model">獲取用戶信息模型</param>
 7         /// <returns></returns>
 8         [HttpPost]
 9         //添加方法修飾屬性返回類型說明
10         [SwaggerResponse(HttpStatusCode.OK, Type = typeof(ResultInfo<UserInfo>))]
11         public HttpResponseMessage GetUserInfo([FromBody]GetUserInfoModel model)
12         {
13             ResultInfo<UserInfo> result = new ResultInfo<UserInfo>();
14             try
15             {
16                 UserInfo user = new UserInfo();
17                 user.Name = "Peter";
18                 user.Phone = model.phone;
19                 user.Email = "itwheels@163.com";
20                 result.Data = user;
21             }
22             catch (Exception ex)
23             {
24                 result.Status = "FAIL";
25                 result.Msg = ex.Message;
26             }         
27             
28             return toJson(result);
29         }
30     }
View Code

按照代碼,我們想要的顯示方法名GetUserInfo。今天在寫另一篇API相關文章,才發現這個問題。經過一份琢磨,發現swashbuckle 是根據我們在路由配置WebApiConfig中的模版來生成的。如,默認的配置代碼為:

1  config.Routes.MapHttpRoute(
2                 name: "DefaultApi",
3                 routeTemplate: "api/{controller}/{id}",
4                 defaults: new { id = RouteParameter.Optional }
5             );

所以,按照這個配置生成的文檔只顯示了控制器的名字,卻沒有方法名。

解決方案

按照上面分析的思路,要在swagger文檔中顯示接口的方法名,只需修改路由模版就可以了。修改后的代碼如下:

1             config.Routes.MapHttpRoute(
2                 name: "DefaultApi",
3                 routeTemplate: "api/{controller}/{action}"
4             );

這樣修改后,我們就可以在swagger文檔中看到方法名拉。如下圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM