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、インストールしたら間違いを報告する可能性があります