programing

Swagger를 기본 시작 페이지로 설정하는 방법

magicmemo 2023. 3. 12. 10:39
반응형

Swagger를 기본 시작 페이지로 설정하는 방법

ABP 템플릿에서 Swagger를 기본 시작 페이지로 설정하는 방법/Account/Login?

ASP를 사용하고 있습니다.NET MVC 5.x + Angular 1.x

갱신하다

현재 코드:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    //ASP.NET Web API Route Config
    routes.MapHttpRoute(
        name: "swagger_root",
        routeTemplate: "",
        defaults: null,
        constraints: null,
        handler: new RedirectHandler((message => message.RequestUri.ToString()), "swagger"));

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

모듈 0을 제외하고 모든 것이 정상적으로 작동합니다."api/Account/Authenticate"파손된 요청은 다음과 같이 표시됩니다.

리소스를 찾을 수 없습니다.

ASP Net Core > 2.2의 RESTFUL API의 경우 Project/Properties/Debug에서 기본 URL을 설정합니다.

기본 URL In Resful API dot net core 2.2

주요 질문은 ASP에 관한 것이었던 것을 알고 있습니다.넷 MVC(ASP용).NetCore는 유사한 질문에 대한 이 답변에서 얻은 우수한 솔루션(Swagger 사용)UI): https://stackoverflow.com/a/50127631/1179562

app.UseSwaggerUI(c =>
{
    c.RoutePrefix = "";
    ...
};

다음 코멘트에 따라 다음 루팅을 RouteConfig.cs에 추가합니다.

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    //ASP.NET Web API Route Config
    routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
        );

    // Set Swagger as default start page
    /*
    routes.MapHttpRoute(
        name: "swagger_root",
        routeTemplate: "",
        defaults: null,
        constraints: null,
        handler: new RedirectHandler((message => message.RequestUri.ToString()), "swagger"));
    */

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

Solution Explorer Panel > Properties 순으로 이동했습니다.거기서 launchsettings.json이라는 파일을 찾았습니다.

이 파일에서는 발견된 모든 섹션에서 "launchUrl" 파라미터 값을 "swagger/index.html"로 변경했습니다.

난 괜찮아.

[ Asp ] 。Net Web API Core 3.x는 다음 작업을 수행합니다(Route Prefix).

        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "Baha'i Prayers API");
            c.InjectStylesheet("/swagger/custom.css");
            c.RoutePrefix = String.Empty;
        });

프로젝트 속성의 Start Action에 Specific Page > /swagger/ui/index를 입력함으로써 이 작업을 수행할 수 있었습니다.

여기에 이미지 설명 입력

메모: NuGet의 Swashbuckle을 사용하고 있습니다.

Visual Studio, IIS Express 및 IIS에서 모두 잘 작동한 제품입니다.다음 내용으로 컨트롤러를 작성하기 위해서입니다.

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace WebApplication.Controllers
{
    /// <summary>
    /// Controller to display API documentation in Swagger format
    /// </summary>
    [Route("")]
    [ApiExplorerSettings(IgnoreApi = true)]
    public class DocsController : Controller
    {
        [Route("docs"), HttpGet]
        [AllowAnonymous]
        public IActionResult ReDoc()
        {
            return View();
        }

        [Route(""), HttpGet]
        [AllowAnonymous]
        public IActionResult Swagger()
        {
            return Redirect("~/swagger");
        }
    }
}

주의: launchsettings.json 파일의 편집은 Visual Studio에서 정상적으로 실행되었지만 IIS에서 애플리케이션을 호스팅할 때 예상대로 작동하지 않는다고 주장합니다.

이렇게 하면 여러 다른 장소에서 많은 설정을 작성하는 것보다 더 깔끔하다는 것을 알 수 있었습니다.

.Net core 3.1의 경우 launchSettings.json 파일에서 설정을 변경합니다.

launchSettings.json 파일 검색 속성 "launchUrl" 값을 "swagger"로 변경합니다.아래를 참조하십시오.

 "profiles": {
"IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "swagger",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
},
"AfterPayAPI": {
  "commandName": "Project",
  "launchBrowser": true,
  "launchUrl": "swagger",
  "applicationUrl": "https://localhost:5001;http://localhost:5000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}

언급URL : https://stackoverflow.com/questions/47457681/how-to-set-swagger-as-default-start-page

반응형