programing

ASP.NET 코어에서 Swagger의 기본 URL을 변경하는 방법

lovejava 2023. 7. 18. 21:23

ASP.NET 코어에서 Swagger의 기본 URL을 변경하는 방법

ASP.NET Core 프로젝트에서 스웨거를 활성화하면 기본적으로 다음 URL에서 사용할 수 있습니다.

http://localhost:<random_port>/swagger/ui

저는 대신 다른 기본 URL을 사용하고 싶습니다./swagger/ui어떻게/어디서 구성할 수 있습니까?

이전 버전의 경우 다음을 구성할 수 있습니다.RootUrl그러나 ASP.NET Core에는 유사한 방법이 없습니다.

.EnableSwagger(c =>
{
    c.RootUrl(req => myCustomBasePath);
});

ASP.NET Core 2의 경우(및 사용)Swashbuckle.AspNetCore.Swagger -Version 4.0.1), 기본 스웨거 UI 기본 URL을 변경하는 전체 구성에 대해 몇 가지 작업을 수행할 수 있습니다.

기본 스웨거 UI URL의 시작 부분에 "mycoolapi"를 추가하려면 다음과 같이 하십시오.http://<server>/mycoolapi/swagger그런 다음 다음을 수행합니다.

Startup.cs 구성 방법에서 다음을 수행합니다.

    app.UseSwagger(c =>
    {
        c.RouteTemplate = "mycoolapi/swagger/{documentname}/swagger.json";
    });


    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/mycoolapi/swagger/v1/swagger.json", "My Cool API V1");
        c.RoutePrefix = "mycoolapi/swagger";
    });

그런 다음 현재 시작 시(개발 목적으로) 스웨거 UI에서 브라우저를 시작하도록 실행 설정이 있는 경우, 실행 설정.json 파일 프로파일 섹션을 유사하게 업데이트합니다.

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

새 스웨거 버전은 RoutePrefix라는 속성을 제공합니다.

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    c.RoutePrefix = "docs";
});

.net core에 대해 작동해야 합니다.

.NET 5에서는 다른 대답이 나오지 않았습니다.경로에 'docs'를 추가한 방법은 다음과 같습니다.

app.UseSwagger(c => c.RouteTemplate = "/swagger/docs/{documentName}/swagger.json");
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/docs/v2/swagger.json", "My API"));

구성에서도 이 작업을 수행할 수 있습니다.

app.UseSwaggerUI(c =>
            {
                c.RoutePrefix = string.Empty;
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY API");
            });
  1. launchSettings.json 파일을 엽니다.
  2. 설정에 따라 "프로파일" 노드 아래에 하나 이상의 프로파일이 있어야 합니다."IIS Express"와 프로젝트 이름을 가진 다른 이름(예: WebApplication1)이 있는 경우가 있는데, 이제 launchUrl 항목을 "launchUrl"로 변경합니다. "swagger"는 제 문제를 해결했습니다.
  3. 이것이 작동하지 않고 다른 프로필이 있는 경우 동일한 작업을 수행하고 테스트합니다.

위의 해결책들이 모두 작동하지 않았기 때문에 저는 원본 문서들을 샅샅이 뒤져야 했습니다.Startup.cs 있는 이 코드가 저에게 도움이 됩니다.

app.UseSwagger();
app.UseSwaggerUI(c => {
    c.SwaggerEndpoint($"./v1/swagger.json", "SapWeb v1");
});

내 사이트는 IIS의 하위 사이트입니다.그래서 처음에는 PathBase를 설정해야 했습니다.

app.UsePathBase($"{pathbase}");

UseSwaggerUi()StartUp 클래스의 Configure 메서드에서 미들웨어를 활성화하는 확장 메서드는 두 가지 변수를 사용합니다.abaseRoute어느 것이swagger/ui기본적으로 및swaggerUrl어느 것이swagger/v1/swagger.json결석으로다른 baseRoute를 제공하기만 하면 됩니다.

//Swagger will be available under '/api' url
app.UseSwaggerUi("api");

사람들이 ASP.NET Core용 Swagger를 구성하는 방법에 대해 자세히 알고 싶다면 블로그 포스트를 작성했습니다. https://dannyvanderkraan.wordpress.com/2016/09/09/asp-net-core-1-0-web-api-automatic-documentation-with-swagger-and-swashbuckle/

언급URL : https://stackoverflow.com/questions/39116047/how-to-change-base-url-of-swagger-in-asp-net-core