在Linux系統中,Swagger API文檔的共享可以通過以下幾種方式進行:
你可以通過將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。
為了確保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文檔。
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文檔,確保其安全性和一致性。