zoukankan      html  css  js  c++  java
  • 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文档中看到方法名拉。如下图:

  • 相关阅读:
    docker-compose 命令详解
    Ubuntu 安装 rabbitmq
    scrapy.cmdline.execute
    queue.Queue()
    多线程通信
    多线程(thread+queue 售票)
    协程
    线程
    利用Nginx实现反向代理web服务器
    利用Nginx实现反向代理web服务器
  • 原文地址:https://www.cnblogs.com/liangxiarong/p/7782161.html
Copyright © 2011-2022 走看看