yaml - 路径中具有多个/连续 $ref 元素的 OpenApi 文件给出了重复的映射键
问题描述
我有以下 OpenAPI 文件,我的目的是在自己的 yaml 文件中定义员工、客户、项目端点。但是,使用下面的代码会导致“重复映射键”错误 - 这是因为使用了“$ref”(连续)。有没有办法实现这种隔离?
openapi: 3.0.3
info:
title: example
servers:
- url: https://example.net/api
security:
- apiKey: []
paths:
$ref: './employee/resource.api.yaml'
$ref: './projects/resource.api.yaml'
$ref: './customers/resource.api.yaml'
更新了文件内容: employee/resource.api.yaml
/employee/{id}
get:
...
/employee/{id}/addresses
get:
...
项目/resource.api.yaml
/projects/{id}
get:
...
put:
...
/projects/{id}/files
get:
...
/projects/{id}/fies/{fileName}/Content
get:
...
解决方案
paths
节点本身不$ref
支持。您只能引用单个路径的内容:
paths:
/employee/{id}:
$ref: './employee/employeeById.yaml'
/projects/{id}:
$ref: './project/projectById.yaml'
员工/employeeById.yaml:
get:
operationId: ...
summary: ...
...
项目/projectById.yaml:
get:
operationId: ...
summary: ...
...
put:
operationId: ...
summary: ...
...
或者,如果您想保持当前的resource.api.yaml文件不变,$refs 将如下所示。有关指针如何在值中编码的说明,请参见此答案。#/...
$ref
paths:
/employee/{id}:
$ref: './employee/resource.api.yaml#/employee~1%7Bid%7D'
/employee/{id}/addresses:
$ref: './employee/resource.api.yaml#/employee~1%7Bid%7D~1addresses'
/projects/{id}:
$ref: './project/resource.api.yaml#/projects~1%7Bid%7D'
推荐阅读
- javascript - ajax-bootstrap-select 是否支持 liveSearch?
- android - 从 Bundle 中插入字符串到 ArrayList 中
- python - pandas 将对象列转换为字符串类型
- apache-kafka - Coucbase 到 Kafka 源连接器
- python - 如何使 Python 模块中的变量在 Go 中可用?
- rust - 如何使用 structs 和 impl 的生命周期来推断实现的适当生命周期?
- ibm-cloud - cookie 哈希键是否特定于 appid 适配器?
- mysql - “MYSQL:我如何输入编号?”
- javascript - 由 toString() 存储为字符串的 Google 表格日期在写回单元格时不会被识别为日期?
- java - 随机游走不走 JAVA