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文档中看到方法名拉。如下图:

 

posted @ 2017-11-04 07:59  早起Abc  阅读(2179)  评论(0编辑  收藏  举报