swagger-generator-koa的multipart/form-data请求模型示例求助
解决swagger-generator-koa中multipart/form-data请求未被识别的问题
你的请求模型存在两处关键问题,导致swagger-generator-koa无法正确识别multipart/form-data类型接口:
- Joi数组规则冗余:
Joi.array().items()不需要重复定义多个相同的Joi.binary()规则,重复定义会引发解析异常,只需声明一次即可作用于数组所有元素。 - 缺少显式Content-Type声明:部分Swagger生成库需要明确指定请求的Content-Type为
multipart/form-data,否则无法匹配对应接口定义。
修正后的请求模型
{ formData: { files: Joi.array() .items(Joi.binary().encoding('base64').max(2 * 1024 * 1024)) .required() }, model: 'uploadFiles', group: "uploads", description: "upload files", excludeFromSwagger: false, consumes: ['multipart/form-data'] // 显式指定请求内容类型 }
额外配置要求
确保你的Koa项目已配置支持multipart/form-data的中间件,比如koa-body(需启用multipart选项):
const koaBody = require('koa-body'); app.use(koaBody({ multipart: true, formidable: { maxFileSize: 2 * 1024 * 1024 * 4 // 对应单文件2MB、最多4个文件的总限制 } }));
修改后,swagger-generator-koa就能正确识别该上传接口,你也可通过Swagger UI正常发起multipart/form-data请求。
内容的提问来源于stack exchange,提问作者syed kumail abbas
相关产品推荐
相关产品推荐

