c# webapi swagger

2681 ワード

swaggerの構成方法


プロジェクトでは、Webapiのテストを表示したいと思っています.では、統合されたテストが必要です.

ステップ


1.nutget管理パッケージからswaggerパッケージをダウンロードします.
2.これでApp_startフォルダにswaggerconfigが表示されます.csとswaggerNet.cs、この時に配置する必要がある時です.
3.次のコメントをキャンセル(swaggerconfig.cs)
 c.IncludeXmlComments(string.Format("{0}/bin/ThinkingSpace.XML", System.AppDomain.CurrentDomain.BaseDirectory));

もちろん、コードのモジュール化のために、次の方法にカプセル化することができます.
private static string GetXmlCommentsPath()
{
    return $@"{System.AppDomain.CurrentDomain.BaseDirectory}\bin\GetDocumentation.XML";
}

はい、ok、この構成を知っています.
ではbinディレクトリの下にxmlを作成する必要があります.推奨はプロジェクト名です.xml.
4.次はswaggerNet.cs構成
using System;
using System.IO;
using System.Web;
using System.Web.Http;
using System.Web.Http.Description;
using System.Web.Http.Dispatcher;
using System.Web.Routing;
using Swagger.Net;

[assembly: WebActivator.PreApplicationStartMethod(typeof(ThinkingSpace.App_Start.SwaggerNet), "PreStart")]
[assembly: WebActivator.PostApplicationStartMethod(typeof(ThinkingSpace.App_Start.SwaggerNet), "PostStart")]
namespace ThinkingSpace.App_Start 
{
    public static class SwaggerNet 
    {
        public static void PreStart() 
        {
            RouteTable.Routes.MapHttpRoute(
                name: "SwaggerApi",
                routeTemplate: "api/docs/{controller}",
                defaults: new { swagger = true }
            );            
        }
        
        public static void PostStart() 
        {
            var config = GlobalConfiguration.Configuration;

            config.Filters.Add(new SwaggerActionFilter());
            
            try
            {
                config.Services.Replace(typeof(IDocumentationProvider),
                    new XmlCommentDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/ThinkingSpace.XML")));
            }
            catch (FileNotFoundException)
            {
                throw new Exception("Please enable \"XML documentation file\" in project properties with default (bin\\ThinkingSpace.XML) value or edit value in App_Start\\SwaggerNet.cs");
            }
        }
    }
}

統一はxmlの位置を変更する必要があります.

に注意


Webapiにはgetが1つしか存在しない必要があります.そうしないと、restful基準を満たす必要があるため、エラーが発生します.
1つのコントローラに1つのHttpGetリクエストしかないので、多くなるとエラーが発生します.他のGetメソッドを分離するには、リロードメソッドを減らすことを推奨します.
もしswagger.configにc.ResolveConflictingActions(apiDescriptions=>apiDescriptions.First();最初のgetメソッドのみが表示されます
また、swagger ui forをインストールしなくてもよい.Net、インストールしたら間違いを報告する可能性があります