OpenAPI Generator中@分隔路径参数识别异常的解决方法
解决方案
问题出在OpenAPI Generator的路径参数解析逻辑上:默认情况下,路径参数会被解析为从{到下一个/或路径末尾的内容,所以{middlename}@{lastname}会被误判为一个名为middlename}@{lastname}的参数,而非两个独立参数。
要在不修改路径的前提下解决这个问题,只需给middlename参数添加正则表达式约束,明确它的匹配范围是@符号之前的内容:
- 在
middlename的参数定义中,添加pattern字段,值为^[^@]+$(表示匹配不包含@的任意字符串) - 这个正则会告诉解析器:
middlename参数仅匹配到@为止,后续的{lastname}是独立的路径参数
修改后的Swagger规范片段如下:
"/human/{firstname}/me/{middlename}@{lastname}": { "get": { "operationId": "someid", "parameters": [ { "name": "middlename", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[^@]+$" // 添加参数匹配范围约束 } }, { "name": "lastname", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "height", "in": "query", "schema": { "type": "string" } }, { "name": "firstname", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "default": { "description": "default response", "content": { "application/json": { "schema": { "type": "object" } } } } } } }
这样修改后,OpenAPI Generator就能正确识别middlename和lastname为两个独立的路径参数,同时保持原路径不变。
内容的提问来源于stack exchange,提问作者Sam6
相关产品推荐
相关产品推荐

