Postman创建API时出现Invalid data type错误的正确解决方法
Postman API定义
type: file报错问题解决方案 报错根因
Postman的API定义校验严格遵循JSON Schema基础类型约束,file不属于官方规定的7种合法基础类型(array/boolean/integer/number/object/string/null),所以直接在schema中声明"type": "file"会触发报错。
你将file改为object的操作仅能绕开校验,完全不符合文件上传的类型定义规范,后续会导致Postman自动生成请求示例、参数校验、接口联调等环节出现不兼容问题。
正确修改方案
根据你使用的OpenAPI版本选择对应配置即可:
适用Swagger 2.0(OpenAPI 2.0)
上传文件的参数不能放在body位置,必须放在formData中,同时需要在接口层级声明请求内容类型为multipart/form-data,正确配置如下:
"parameters": [ { "in": "formData", "name": "file", "description": "上传的文件列表", "required": false, "type": "array", "items": { "type": "file" } }, // 其余参数保持不变 ], "consumes": ["multipart/form-data"]
适用OpenAPI 3.0及以上版本
该版本规范废弃了formData参数位置,同时移除了file类型,统一用type: string + format: binary表示二进制文件类型,文件数组需要配置在请求体的multipart/form-data结构下:
"requestBody": { "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "file": { "type": "array", "items": { "type": "string", "format": "binary" }, "description": "上传的文件列表" } } } } }, "required": false }
效果验证
修改完成后保存API定义,Postman不会再抛出类型错误,基于该定义生成的请求可以直接在Body的form-data栏添加多个文件参数,和后端接口的联调适配也不会出现兼容性问题。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

