在 Linux 上的 Swagger OpenAPI 数据验证实践
一 验证范围与总体思路
二 文档规范校验
三 运行时请求与响应数据校验
四 快速上手示例 Node.js
const express = require(‘express’); const swaggerJsDoc = require(‘swagger-jsdoc’); const swaggerUi = require(‘swagger-ui-express’); const Joi = require(‘joi’);
const app = express(); app.use(express.json());
const swaggerOptions = { swaggerDefinition: { openapi: ‘3.0.0’, info: { title: ‘Sample API’, version: ‘1.0.0’ }, components: { schemas: { User: { type: ‘object’, required: [‘id’,‘name’,‘email’], properties: { id: { type: ‘integer’, format: ‘int64’ }, name: { type: ‘string’, minLength: 3 }, email: { type: ‘string’, format: ‘email’ } } } } } }, apis: [‘./openapi.yaml’] };
const swaggerDocs = swaggerJsDoc(swaggerOptions); app.use(‘/api-docs’, swaggerUi.serve, swaggerUi.setup(swaggerDocs));
const userSchema = Joi.object({ id: Joi.number().integer().required(), name: Joi.string().min(3).required(), email: Joi.string().email().required() });
app.post(‘/users’, (req,res,next)=>{ const { error } = userSchema.validate(req.body); if (error) return res.status(400).json({ message: error.details[0].message }); next(); }, (req,res)=>{ res.json({ message: ‘User created’ }); });
app.listen(3000, () => console.log(‘Server on :3000, /api-docs for docs’));
五 常见注意事项