2016-06-09 18 views
6

Tôi có một dự án WebApi với Swashbuckle được cài đặt trên đó.Cách chuyển hướng từ url gốc sang/swagger/ui/index?

Trong thiết lập mặc định, tôi phải mở trong trình duyệt http://localhost:56131/swagger/ui/index để xem trang mô tả hoạt động và trang thử nghiệm của tôi. Tôi muốn nó có thể truy cập từ gốc của trang web: http://localhost:56131/. Làm thế nào tôi có thể đạt được điều này?

+0

bạn có thể giải quyết @ kpa6uk này không? – Sampada

+0

@Sampada không, tôi đã không. Tôi tin rằng điều này có thể được giải quyết với một số trang web chuyển hướng api, và swagger chỉ là trường hợp của tôi. Tôi đã tạm dừng tác vụ này để nghiên cứu thêm. –

+0

Bạn có nhìn vào câu trả lời của tôi không? Hãy xem xét đánh dấu nó là giải pháp nếu nó giúp – bsoulier

Trả lời

15

Bị ảnh hưởng bởi this answer to similar question, mã chút thay đổi:

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); 
    } 
} 

Bằng cách này nó không phải là cần thiết để tạo ra bộ điều khiển WebAPI mới như cũng vậy @bsoulier trong câu trả lời của mình.

Giải pháp này dựa trên lớp hiện có RedirectHandler trong số Swashbuckle.Core lắp ráp.

+0

Rất vui khi bạn chỉ ra .trim ('/') - Tôi đã bỏ lỡ lần đầu tiên này! –

4

Nếu bạn chắc chắn sử dụng một dự án Web API, bạn có thể:

  • phép Http Attribute Routing,
  • tạo phương pháp sau đây trong vòng một hiện tại hoặc điều khiển mới:
[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; 
} 

Note việc sử dụng thuộc tính ApiExplorerSettings, để nó không hiển thị trong định nghĩa Swagger.

Các vấn đề liên quan