SwashbuckleがインストールされたWebApiプロジェクトがあります。
デフォルトのセットアップでは、ブラウザで開く必要がありますhttp://localhost:56131/swagger/ui/index
私の操作の説明とテストページを表示します。サイトのルートからアクセスできるようにしたい:http://localhost:56131/
。どうすればこれを達成できますか?
同様の質問に対するこの回答 の影響を受け、コードがわずかに変更されました:
public class WebApiConfig
{
public static void Configure(IAppBuilder app)
{
var httpConfig = new HttpConfiguration();
// Attribute routing
config.MapHttpAttributeRoutes();
// Redirect root to Swagger UI
config.Routes.MapHttpRoute(
name: "Swagger UI",
routeTemplate: "",
defaults: null,
constraints: null,
handler: new RedirectHandler(SwaggerDocsConfig.DefaultRootUrlResolver, "swagger/ui/index"));
// Configure OWIN with this WebApi HttpConfiguration
app.UseWebApi(httpConfig);
}
}
この方法では、@ bsoulierが回答で行ったように、新しいWebAPIコントローラを作成する必要はありません。
このソリューションは、Swashbuckle.Core
アセンブリの既存のクラスRedirectHandler
に基づいています。
Web APIプロジェクトを確実に使用する場合は、次のことができます。
[Route(""), HttpGet]
[ApiExplorerSettings(IgnoreApi = true)]
public HttpResponseMessage RedirectToSwaggerUi()
{
var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.Found);
httpResponseMessage.Headers.Location = new Uri("/swagger/ui/index", UriKind.Relative);
return httpResponseMessage;
}
Swagger定義に表示されないように、ApiExplorerSettings
属性の使用に注意してください。
上記の答えのさらに簡単な変形:
public class DefaultController : Controller
{
[Route(""), HttpGet]
[ApiExplorerSettings(IgnoreApi = true)]
public RedirectResult RedirectToSwaggerUi()
{
return Redirect("/swagger/");
}
}
シンプルなほど良いです!これは私のために働きます。
ために .net core
プロパティlaunchsettings.jsonで、プロファイルとapiセクションを変更してswaggerを指すようにします。
profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"authapi": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/swagger",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
Asp.netコア2.1/2.2のlaunchSetting.JsonのlaunchUrl = "swagger/index.html"
の値を変更します
"ProjectName": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger/index.html",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:44333"
}
タスクで許可されている場合は、_layout.chtmlで頭に次の行を追加します。
<meta http-equiv="refresh" content="0; URL='/swagger'" />
これにより、ページが読み込まれた後にswagger/indexにリダイレクトされます