我有以下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'
更新文件内容:员工/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'