设为首页 加入收藏

TOP

记Asp.Net Core Swagger 使用 并带域接口处理
2019-09-17 18:24:28 】 浏览:13
Tags:Asp.Net Core Swagger 使用 接口 处理

引用作者原话:Asp.Net的WebApi中使用Swagger作为说明和测试的页面是非常不错的,比起WebApiTestClient来至少在界面上的很大的提升。但是使用Swagger时如果只是一般的控制器直接放到Controller下就可以了,而如果因不同的业务需求而需要分类或者有同名的类名时时则没办法很好的处理。

  因为业务需求需要创建域,但是Swagger 并未将域添加到接口。所以需要加上以下操作才行。

安装Swagger 方法:

    为了大家多看微软官方文档、就直接引用Swagger安装及使用方法。 以下是微软官方文档。

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-2.1&tabs=visual-studio

增加域接口显示方法:

 

 

using Microsoft.AspNetCore.Mvc.ApiExplorer;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace System.Web.Http.Description
{
    /// <summary>
    /// API描述器扩展
    /// </summary>
    public static class ApiDescriptionExtension
    {
        /// <summary>
        /// 获取区域名称
        /// </summary>
        /// <param name="description"></param>
        /// <returns></returns>
        public static List<string> GetAreaName(this ApiDescription description)
        {
            string areaName = description.ActionDescriptor.Routeva lues["area"];
            string controlName = description.ActionDescriptor.Routeva lues["controller"];
            List<string> areaList = new List<string>();
            areaList.Add(controlName);
            if (!string.IsNullOrEmpty(areaName))
            {
                description.RelativePath = $"{areaName}/{controlName}/{description.RelativePath}";
            } 
            return areaList;
        }
    }
}

通过接口描述扩展获取区域及相关信息进行改写扩展。

 

使用说明:

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Swashbuckle.AspNetCore.Swagger.Info
                {
                    Version = "v1.0.0",
                    Title = " API",
                    Description = description,
                    TermsOfService = "你的公司",
                    Contact = new Swashbuckle.AspNetCore.Swagger.Contact { Name = "Blog.Core", Email = "Blog.Core@xxx.com", Url = "https://www.jianshu.com/u/94102b59cc2a" }
                    
                });
                //使用域描述
                c.TagActionsBy(apiDesc => apiDesc.GetAreaName());

                var basePath = PlatformServices.Default.Application.ApplicationBasePath;
                var xmlPath = Path.Combine(basePath, xmlName);//这个就是刚刚配置的xml文件名
                c.IncludeXmlComments(xmlPath, true);//默认的第二个参数是false,这个是controller的注释,记得修改
            });

红色部分加入代码即可。

 

结果展示:

 

 

本文章参考 学而时习之进行 更改。  多谢!
作者:_学而时习之_
来源:CSDN
原文:https://blog.csdn.net/xxdddail/article/details/81868721
版权声明:本文为博主原创文章,转载请附上博文链接!

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇初识Identity并添加身份验证管理.. 下一篇.NET高级代码审计(第一课)XmlSe..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目