我有一個安裝了Swashbuckle的WebApi項目。如何從根網址重定向到/ swagger/ui/index?
在默認設置下,我必須打開瀏覽器http://localhost:56131/swagger/ui/index
才能查看我的操作說明和測試頁面。我希望它可以從站點的根目錄訪問:http://localhost:56131/
。我怎樣才能做到這一點?
我有一個安裝了Swashbuckle的WebApi項目。如何從根網址重定向到/ swagger/ui/index?
在默認設置下,我必須打開瀏覽器http://localhost:56131/swagger/ui/index
才能查看我的操作說明和測試頁面。我希望它可以從站點的根目錄訪問:http://localhost:56131/
。我怎樣才能做到這一點?
通過this answer to similar question影響,略作修改代碼:
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
。
很高興您指出.trim(' /') - 我第一次錯過了! –
如果您肯定使用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;
}
注使用ApiExplorerSettings
屬性,這樣它就不會出現在Swagger定義中。
你能解決這個@ kpa6uk嗎? – Sampada
@桑帕達不,我沒有。我相信這可以通過一些web api重定向來解決,而swagger就是我的例子。我暫停了這項任務以作進一步研究。 –
你看過我的回答嗎?考慮將它標記爲解決方案,如果它有幫助 – bsoulier