使用swagger-ui-express时出现No operations defined等错误求助
修复swagger-ui-express的"No operations defined in spec!"和"Resolver error"问题
你的错误完全源于swagger.json的paths配置不符合Swagger规范,下面是具体问题和修复方案:
核心问题1:HTTP方法层级错误
你把post方法直接放在paths根节点下,和/api/category同级,这完全不符合规范。Swagger的paths结构必须是路径 -> HTTP方法(get/post等),所以post方法要嵌套在/api/category节点内部。
核心问题2:Get请求缺少HTTP方法声明
/api/category下直接写了tags、summary等属性,但未包裹在get字段中,Swagger无法识别这是一个Get接口。
多处拼写错误
tages→ 正确写法是tagssummery→ 正确写法是summary(且summary是字符串类型,你原Get请求里写成了数组)formDate→ 正确写法是formDatadescripition→ 正确写法是description- 参数名
Category Image包含空格,不符合规范,建议改为categoryImage这类无空格命名
修复后的paths配置示例
"paths": { "/api/category": { "get": { "tags": [ "Category" ], "summary": "Get all Categories", "parameters": [ { "name": "categoryName", "in": "query", "required": false, "description": "Category name", "type": "string" }, { "name": "page", "in": "query", "required": false, "description": "Page Number", "type": "integer", "default": 1 }, { "name": "PageSize", "in": "query", "required": false, "type": "integer", "default": 10 } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ServiceResponse" } } } }, "post": { "tags": [ "Category" ], "summary": "Create Category API", "parameters": [ { "name": "categoryName", "in": "formData", "description": "Category Name", "required": true, "type": "string" }, { "name": "CategoryDescription", "in": "formData", "description": "Category Description", "type": "string" }, { "name": "categoryImage", "in": "formData", "description": "Category Image", "type": "file" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/ServiceResponse" } } } } } }
额外检查点
如果修复后仍有问题,确认swagger.json最外层包含必要的基础结构:
{ "swagger": "2.0", "info": { "title": "你的API标题", "version": "1.0.0" }, "definitions": { "ServiceResponse": { // 你的响应结构定义 } }, "paths": { // 上面修复后的内容 } }
内容的提问来源于stack exchange,提问作者Ibrahim Mahmoud
相关产品推荐
相关产品推荐

