linux

如何利用Swagger在Linux上进行API监控

小樊
41
2025-03-01 22:49:54
栏目: 智能运维

利用Swagger在Linux上进行API监控,通常涉及以下几个步骤:

1. 安装Swagger Editor和Swagger UI

首先,你需要在Linux服务器上安装Swagger Editor和Swagger UI。以下是安装步骤:

安装Node.js和npm

# 更新包列表
sudo apt update
# 安装必要的依赖
sudo apt install -y openjdk-11-jre-headless

下载并解压Swagger UI

# 下载 Swagger UI
wget https://repo1.maven.org/maven2/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2.html
# 解压 Swagger UI
unzip springfox-swagger-ui-2.9.2.html
# 移动解压后的文件到 Web 服务目录 (例如 /var/www/html)
sudo mv springfox-swagger-ui-2.9.2 /var/www/html/swagger-ui

配置Swagger UI

编辑 /var/www/html/swagger-ui/index.html 文件,找到以下行并进行修改:

script window.onload function () {
  // Begin Swagger UI call region
  const ui SwaggerUIBundle({
    url: "http://petstore.swagger.io/v2/api-docs",
    dom_id: '#swagger-ui',
    deepLinking: true,
    presets: [
      SwaggerUIBundle.presets.apis,
      SwaggerUIStandalonePreset
    ],
    plugins: [
      SwaggerUIBundle.plugins.DownloadUrl
    ],
    layout: "StandaloneLayout"
  });
  // End Swagger UI call region
  window.ui = ui;
};

启动Web服务器(例如Apache或Nginx)

Apache:

sudo a2ensite default.conf
sudo systemctl restart apache2

Nginx:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup
sudo nano /etc/nginx/sites-available/default

修改 server 块中的 rootindex 指令:

server {
  listen 80 default_server;
  listen [::]: 80 default_server;
  root /var/www/html;
  index index.html index.htm;
  server_name _;
  location / {
    try_files $uri $uri/ =404;
  }
}

保存并退出编辑器,然后重启Nginx:

sudo systemctl restart nginx

安装Swagger Editor

# 下载 Swagger Editor
wget https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.50.0/swagger-editor.min.js
wget https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.50.0/swagger-editor.min.css
# 移动文件到 Web 服务目录 (例如 /var/www/html)
sudo mv swagger-editor.min.js /var/www/html/swagger-editor.js
sudo mv swagger-editor.min.css /var/www/html/swagger-editor.css
# 创建一个简单的 HTML 文件来加载 Swagger Editor
sudo nano /var/www/html/swagger-editor.html

swagger-editor.html 文件中添加以下内容:

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" type="text/css" href="swagger-editor.css">
</head>
<body>
  <div id="swagger-editor"></div>
  <script src="swagger-editor.js"></script>
  <script>
    window.onload = function () {
      const editor = SwaggerEditor({
        url: "https://petstore.swagger.io/v2/api-docs",
        dom_id: '#swagger-editor'
      });
    };
  </script>
</body>
</html>

启动Web服务器(例如Apache或Nginx):

Apache:

sudo a2ensite default.conf
sudo systemctl restart apache2

Nginx:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup
sudo nano /etc/nginx/sites-available/default

修改 server 块中的 rootindex 指令:

server {
  listen 80 default_server;
  listen [::]: 80 default_server;
  root /var/www/html;
  index index.html index.htm;
  server_name _;
  location / {
    try_files $uri $uri/ =404;
  }
}

保存并退出编辑器,然后重启Nginx:

sudo systemctl restart nginx

现在,你应该能够通过浏览器访问 http://your_server_ip/swagger-uihttp://your_server_ip/swagger-editor 来查看和使用 Swagger UI 和 Swagger Editor。

2. 配置Swagger以监控API

使用Springfox(适用于Spring Boot项目)

如果你使用的是Spring Boot项目,可以使用Springfox库来集成Swagger。首先,添加Springfox依赖:

<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
  <version>2.1.0</version>
</dependency>

然后,在Spring Boot配置类中添加Swagger配置:

import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@OpenAPIDefinition(info = @Info(title = "My API", version = "1.0"))
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
                .paths(PathSelectors.any())
                .build();
    }
}

使用springdoc(适用于Spring Boot项目)

springdoc是一个用于生成Swagger UI和Redoc文档的工具,它基于OpenAPI 3.0规范。首先,添加springdoc依赖:

<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
  <version>2.1.0</version>
</dependency>

然后,在Spring Boot配置类中添加Swagger配置:

import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@OpenAPIDefinition(info = @Info(title = "My API", version = "1.0"))
public class SwaggerConfig {
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("My API")
                        .version("1.0")
                        .description("My API description"));
    }
}

3. 远程访问Swagger Editor

为了实现远程访问Swagger Editor,可以使用Docker和内网穿透工具(如Cpolar)。

使用Docker安装Swagger Editor

# 拉取Swagger Editor容器
docker pull swaggerapi/swagger-editor
# 运行容器,将容器的8080端口映射到宿主机的8088端口
docker run -p 8088:8080 -d swaggerapi/swagger-editor

使用Cpolar实现远程访问

  1. 安装Cpolar:
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  1. 启动Cpolar服务:
sudo systemctl enable cpolar
sudo systemctl start cpolar
  1. 配置Swagger Editor公网地址:

0
看了该问题的人还看了