码迷,mamicode.com
首页 > 其他好文 > 详细

Swagger使用的奇淫技巧

时间:2018-01-12 14:16:19      阅读:1339      评论:0      收藏:0      [点我收藏+]

标签:join   分享图片   markdown   pre   agg   result   保存   方法   图片   

一、背景


最近重构了公司一个老接口项目,弃用了原来的webservice服务,新项目用webapi写的。所以就有了 《Swagger使用的奇淫技巧》这篇文章。常规使用的技巧我这里就不在多赘述了,很多老鸟写的已经很详细了。这里我主要介绍下怎么使用VS remark 写MarkDown并且使用Swagger显示

二、ToDo


  • 新建一个WEB API项目,项目名称Demo

  • 引入Swagger

Install-Package Swashbuckle -ProjectName Demo -Version 5.6.0
技术分享图片

  • 右键Demo项目-->生成-->勾选xml文档文件,ctrl+s保存

  • 打开App_Start文件夹,打开SwaggerConfig文件

    添加方法GetXmlCommentsPath,并且打开c.IncludeXmlComments(GetXmlCommentsPath()); 这个配置

      public static string GetXmlCommentsPath()
        {
#if DEBUG
            return AppDomain.CurrentDomain.BaseDirectory + "\\bin\\demo.xml";#elif RELEASE
             return AppDomain.CurrentDomain.BaseDirectory + "\\bin\\Release\\demo.xml";

#else
            return AppDomain.CurrentDomain.BaseDirectory + "\\bin\\demo.xml";
#endif
        }
  • 打开App_Start文件夹,新建文件 FormatCommentProperties.cs,并引入Swashbuckle.Swagger 类库 ,并在SwaggerConfig文件中添加新指向XML描述过滤c.OperationFilter
public class FormatCommentProperties : IOperationFilter
    {
        public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
        {
            operation.description = Formatted(operation.description);
            operation.summary = Formatted(operation.summary);
        }


        private string Formatted(string text)
        {
            if (text == null) return null;

            // Strip out the whitespace that messes up the markdown in the xml comments,
            // but don‘t touch the whitespace in <code> blocks. Those get fixed below.
            string resultString = Regex.Replace(text, @"(^[ \t]+)(?![^<]*>|[^>]*<\/)", "", RegexOptions.Multiline);
            resultString = Regex.Replace(resultString, @"<code[^>]*>", "``` C#", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline);
            resultString = Regex.Replace(resultString, @"</code[^>]*>", "```", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline);
            resultString = Regex.Replace(resultString, @"<!--", "", RegexOptions.Multiline);
            resultString = Regex.Replace(resultString, @"-->", "", RegexOptions.Multiline);

            try
            {
                string pattern = @"```(.*?)```";

                foreach (Match match in Regex.Matches(resultString, pattern, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline))
                {
                    var formattedPreBlock = FormatPreBlock(match.Value);
                    resultString = System.Web.HttpUtility.HtmlDecode(resultString.Replace(match.Value, formattedPreBlock));
                }
                return resultString;
            }
            catch
            {
                // Something went wrong so just return the original resultString
                return resultString;
            }
        }

        private string FormatPreBlock(string preBlock)
        {
            // Split the <pre> block into multiple lines
            var linesArray = preBlock.Split(‘\n‘);
            if (linesArray.Length < 2)
            {
                return preBlock;
            }
            else
            {
                // Get the 1st line after the <pre>
                string line = linesArray[1];
                int lineLength = line.Length;
                string formattedLine = line.TrimStart(‘ ‘, ‘\t‘);
                int paddingLength = lineLength - formattedLine.Length;

                // Remove the padding from all of the lines in the <pre> block
                for (int i = 1; i < linesArray.Length - 1; i++)
                {
                    linesArray[i] = linesArray[i].Substring(paddingLength);
                }

                var formattedPreBlock = string.Join("", linesArray);
                return formattedPreBlock;
            }
        }
    }
  • 写注释
    技术分享图片

  • 现在启动站点
    技术分享图片

Swagger使用的奇淫技巧

标签:join   分享图片   markdown   pre   agg   result   保存   方法   图片   

原文地址:https://www.cnblogs.com/router/p/8274619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!