記Asp.Net Core Swagger 使用 並帶域接口處理

引用做者原話:Asp.Net的WebApi中使用Swagger做爲說明和測試的頁面是很是不錯的,比起WebApiTestClient來至少在界面上的很大的提高。可是使用Swagger時若是隻是通常的控制器直接放到Controller下就能夠了,而若是因不一樣的業務需求而須要分類或者有同名的類名時時則沒辦法很好的處理。api

  由於業務需求須要建立域,可是Swagger 並未將域添加到接口。因此須要加上如下操做才行。visual-studio

安裝Swagger 方法:測試

    爲了你們多看微軟官方文檔、就直接引用Swagger安裝及使用方法。 如下是微軟官方文檔。this

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

增長域接口顯示方法:.net

 

 

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.RouteValues["area"];
            string controlName = description.ActionDescriptor.RouteValues["controller"];
            List<string> areaList = new List<string>();
            areaList.Add(controlName);
            if (!string.IsNullOrEmpty(areaName))
            {
                description.RelativePath = $"{areaName}/{controlName}/{description.RelativePath}";
            } 
            return areaList;
        }
    }
}

經過接口描述擴展獲取區域及相關信息進行改寫擴展。code

 

使用說明:orm

            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的註釋,記得修改
            });

紅色部分加入代碼便可。xml

 

結果展現:blog

 

相關文章
相關標籤/搜索