由于一些向后兼容的原因,我需要支持路径/ ab和/ a-b。
两个路径的请求和响应对象都是相同的。
我的swagger规范中是否可以包含以下内容,以便我不必为这两个路径重复请求和响应对象定义。
paths:
/ab:
/a-b:
post:
...
答案 0 :(得分:4)
是的,您可以让路径项引用另一个路径项,如下所示:
paths:
/ab:
...
/a-b:
$ref: '#/paths/~1ab'
此处,~1ab
是/ab
的转义版本。
在JSON指针中,有两个特殊字符需要转义才能按字面解释:~
变为~0
而/
变为~1
:
/ab
→~1ab
→$ref: '#/paths/~1ab'
/foo/bar
→~1foo~1bar
→$ref: '#/paths/~1foo~1bar'
/ab~cd
→~1ab~0cd
→#/paths/~1ab~0cd
/ab/{c}/{d}
→~1ab~1{c}~1{d}
→#/paths/~1ab~1{c}~1{d}
此方法的一个限制是,在引用的路径项的所有操作中都不能有operationId
。这是因为路径的副本最终具有相同的operationId
值,但operationId
必须是唯一的。