前言
在上一篇文章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 = "[email protected]"; 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 }
按照代码,我们想要的显示方法名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文档中看到方法名拉。如下图:
时间: 2024-10-12 22:34:53