如何在Linux环境下充分利用Swagger进行API开发
在Linux环境下使用Swagger,需先搭建核心工具链。对于Spring Boot项目,需安装Java(≥11)和Maven(依赖管理);对于前端文档展示,需安装Node.js和npm(Swagger Editor/UI的运行环境)。例如,通过以下命令安装OpenJDK 11和Maven:
sudo apt update && sudo apt install -y openjdk-11-jdk maven
若使用Docker,可直接拉取Swagger Editor/UI镜像,简化部署流程。
pom.xml中引入springdoc-openapi-starter-webmvc-ui(支持OpenAPI 3.0,替代传统的Springfox):<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version> <!-- 使用最新稳定版 -->
</dependency>
springdoc会自动扫描com.example.demo.controller(默认包路径)下的接口,生成文档。启动应用后,访问http://localhost:8080/swagger-ui.html即可查看交互式文档。user-api.yaml、order-api.yaml),避免单一文件过大。/v1/users、/v2/orders),便于后续迭代兼容。required、type、format等字段明确参数规则(如path参数必填、string类型限制长度),示例如下:paths:
/products/{id}:
get:
summary: 获取商品详情
parameters:
- name: id
in: path
required: true
schema:
type: string
pattern: '^[0-9a-f]{24}$' # MongoDB ObjectId格式校验
responses:
'200':
description: 成功响应
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
components:
schemas:
Product:
type: object
properties:
id:
type: string
name:
type: string
minLength: 2
maxLength: 50
@Operation描述接口功能、@Parameter说明参数含义、@ApiResponse定义返回结果)。swagger-mock-api根据swagger.yaml生成模拟接口,无需后端代码即可测试前端逻辑。安装并运行:npm install -g swagger-mock-api
swagger-mock-api -p 3000 -s api-spec.yaml
访问http://localhost:3000即可获取模拟数据。requests库编写Python测试脚本,验证接口功能(如状态码、返回数据结构)。示例如下:import requests
response = requests.get('http://localhost:8080/api/v1/users/123')
assert response.status_code == 200
assert 'name' in response.json()
结合Jenkins等CI工具,实现测试自动化。docker run -d -p 38080:8080 --name swagger-editor swaggerapi/swagger-editor:v4.6.0
docker run -d -p 38081:8080 --name swagger-ui swaggerapi/swagger-ui:v4.15.5
访问http://your-server-ip:38080(Editor)或http://your-server-ip:38081(UI)即可使用。server {
listen 80;
server_name api-docs.yourdomain.com;
location / {
root /var/www/swagger-ui;
try_files $uri $uri/ /index.html;
}
}
重启Nginx后,通过域名访问Swagger UI。ufw)仅允许可信IP访问Swagger端口(如sudo ufw allow from 192.168.1.0/24 to any port 38080)。- name: Generate Swagger Docs
run: |
mvn springdoc-openapi:generate
cp -r target/generated-docs /var/www/html/api-docs