Swagger编辑器YAML API测试报错求助:重复映射键及Fetch失败问题
解决你的Swagger YAML报错和API测试问题
我来帮你逐一搞定这两个问题:
问题1:第98行的「重复映射键」错误
仔细看你的YAML代码,第98行的写法违反了YAML语法规范:
get: ----- here I have an error line no 98
YAML中,键(比如get)后面的冒号必须直接结束当前键的定义,不能在同一行添加这种带横线的注释内容——解析器会把后面的字符串当成get的值,而后续的tags、summary等键就会被识别为重复的映射键,触发报错。
另外还有个隐藏问题:/jobs/{id}路径已经定义了路径参数id,但你在get、patch、delete操作里都写了parameters: [],这会覆盖路径级的参数,导致这些操作缺少必填的id参数,不符合OpenAPI规范。
修正后的/jobs/{id}代码片段:
/jobs/{id}: parameters: - in: path name: id schema: type: string required: true description: The user ID get: tags: - Jobs summary: get single job operationId: getsinglejob responses: '200': description: '' headers: {} deprecated: false patch: tags: - Jobs summary: update job operationId: updatejob requestBody: description: '' content: application/json: schema: $ref: '#/components/schemas/updatejobrequest' example: company: prime position: front-end developer required: true responses: '200': description: '' headers: {} deprecated: false delete: tags: - Jobs summary: delete job operationId: deletejob responses: '200': description: '' headers: {} deprecated: false
主要修改点:
- 移除第98行的错误注释,恢复
get:的正确格式 - 删除每个操作里的
parameters: [],让操作继承路径级的id参数
问题2:「Failed to fetch」报错
根据系统提示的可能原因,你可以按以下步骤排查:
1. 解决CORS跨域问题
Swagger编辑器(比如https://editor.swagger.io)属于第三方域名,如果你测试的API后端没有配置允许该域名的跨域请求,浏览器会直接阻止请求。解决方法:
- 让后端在响应头中添加
Access-Control-Allow-Origin: *(测试环境可用,生产环境建议指定具体域名),同时配置Access-Control-Allow-Methods、Access-Control-Allow-Headers等相关CORS头 - 或者使用本地版的Swagger UI,避免跨域限制
2. 检查网络和API可用性
- 直接在浏览器或终端访问
https://new-jobs-api.herokuapp.com/api/v1/jobs,看是否能正常返回响应(终端可以用curl https://new-jobs-api.herokuapp.com/api/v1/jobs) - 如果无法访问,可能是网络故障或者API服务未正常启动
3. 确认URL的正确性
你的服务器URL用的是https,符合要求,但要检查是否有拼写错误:比如域名是否正确、有没有多写/少写字符、路径是否和后端实际路由匹配
内容的提问来源于stack exchange,提问作者Suryavarma MJ
相关产品推荐
相关产品推荐

