溫馨提示×

Linux系統中Swagger API文檔如何共享

小樊
50
2025-04-05 02:26:31
欄目: 智能運維

在Linux系統中,Swagger API文檔的共享可以通過以下幾種方式進行:

  1. 使用Swagger Editor和Swagger UI
  • Swagger Editor:是一個編輯器,可以在其中手動編寫OpenAPI定義,或加載/粘貼任意OpenAPI定義以檢查它們是否存在語法錯誤。Swagger Editor 還集成了 Swagger Codegen。
  • Swagger UI:是一個文檔渲染器,是一個 HTML 頁面??梢园阉赶蛞粋€ OpenAPI 的定義(YAML或JSON文件)。

你可以通過將Swagger Editor和Swagger UI部署在Linux服務器上,然后通過URL訪問這些服務來共享API文檔。例如,使用Docker容器化部署:

# 拉取swagger editor鏡像
docker pull swaggerapi/swagger-editor:v4.6.0
# 運行swagger editor容器
docker run -d -p 38080:8080 swaggerapi/swagger-editor:v4.6.0

# 拉取swagger UI鏡像
docker pull swaggerapi/swagger-ui:v4.15.5
# 運行swagger UI容器
docker run -d -p 38081:8080 swaggerapi/swagger-ui:v4.15.5

部署完成后,可以通過瀏覽器訪問 http://<your-server-ip>:38080 來使用Swagger Editor,訪問 http://<your-server-ip>:38081 來使用Swagger UI。

  1. 密碼保護與登錄驗證

為了確保API文檔的安全性,你可以為Swagger文檔添加密碼保護和登錄驗證。這可以通過在服務器端實現一個中間件來完成。例如,使用C#編寫一個中間件來攔截請求并進行驗證:

public class SwaggerAuthMiddleware
{
    private readonly RequestDelegate next;
    private readonly string userName = "admin";
    private readonly string password = "51aspx";
    public bool Flag = true;

    public SwaggerAuthMiddleware(RequestDelegate next)
    {
        this.next = next;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        if (context.Request.Path.StartsWithSegments("/SignOut") && Flag == true)
        {
            context.Request.Headers.Remove("Authorization");
            context.Response.Headers["www-authenticate"] = "Basic";
            context.Response.Headers["Hello"] = "World";
            context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            Flag = false;
            return;
        }

        Flag = true;
        string authHeader = context.Request.Headers["Authorization"];
        if (authHeader != null && authHeader.StartsWith("Basic"))
        {
            var header = AuthenticationHeaderValue.Parse(authHeader);
            var base64 = Convert.FromBase64String(header.Parameter);
            var credentials = Encoding.UTF8.GetString(base64).Split(':');
            var username = credentials[0];
            var password = credentials[1];
            if (username.Equals(userName) && password.Equals(password))
            {
                // 驗證通過
                Flag = true;
            }
            else
            {
                // 驗證失敗
                context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return;
            }
        }
        else
        {
            // 驗證失敗
            context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            return;
        }

        await next(context);
    }
}

在ASP.NET Core項目中,你可以將這個中間件添加到 Startup.cs 文件的 Configure 方法中:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseMiddleware<SwaggerAuthMiddleware>();
    // 其他中間件和路由配置
}

通過這種方式,只有提供正確用戶名和密碼的用戶才能訪問Swagger API文檔。

  1. 使用Swagger Codegen生成代碼

Swagger Codegen可以從OpenAPI定義生成服務器代碼和客戶端SDK。這樣,你可以確保調用端代碼、服務端代碼以及接口文檔的一致性。生成的代碼可以部署到Linux服務器上,并通過API文檔頁面進行訪問和共享。

例如,使用以下命令生成Java客戶端代碼:

java -jar swagger-codegen-cli-2.4.29.jar generate -i ./swagger.json -l java -o ./client

生成的代碼可以包含API文檔,并且可以通過特定的URL進行訪問和共享。

通過以上方法,你可以在Linux系統中有效地共享和管理Swagger API文檔,確保其安全性和一致性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女