我正在尝试为现有的API创建OAS Swagger文档,其中API的响应基于查询参数而更改。我正在努力以开发人员友好的方式记录这一点,所以需要一些帮助。下面是完整的场景供您参考。
终点1:/订单?expand=false
/order?expand=false
{
"orderNo": "12345",
"orderDetail": "Description of Order",
"orderMarket": {
"id": "UK"
},
"brandOrderStatus": {
"id": "LLA"
}
}
端点2:/订单?expand=true
{
"orderNo": "12345",
"orderDetail": "Description of Order",
"orderMarket": {
"id": "UK",
"descr": "United Kingdom",
"lang": "en-GB"
},
"brandOrderStatus": {
"id": "LLA",
"descr": "Some Status Description",
"lang": "en-GB"
}
}
端点3:/订单?expand=true&include=feature
{
"orderNo": "12345",
"orderDetail": "Description of Order",
"orderMarket": {
"id": "UK",
"descr": "United Kingdom",
"lang": "en-GB"
},
"brandOrderStatus": {
"id": "LLA",
"descr": "Some Status Description",
"lang": "en-GB"
}
"_embedded": {
"features": [
{
"id": "AJS",
"type": "FeatureType",
"descr": "FeatureDescription",
"prices": [
{
"type": "msrpNetPrice",
"amount": 0.00,
"currency": "GBP"
}
],
"group": "null"
}
]
}
}
我尝试使用OneOf,但并不真的认为在这种情况下会工作,因为结构会随着每个可选参数而变化。
有什么想法可以记录在Swagger文档中吗?或者其他什么方法来记录这一切。
1条答案
按热度按时间m3eecexj1#
最直接的解决方案取决于您期望如何使用OpenAPI描述。如果仅用于文档目的,则可以使用
examples
并相应地定义它们。如果您想将其用于代码生成,使用anyOf
可能是定义预期有效负载的更好选择。不幸的是,OpenAPI没有一个很好的方法来记录这样的“场景”。(如果我发送这些查询参数,这就是响应)。没有一个
examples
明确对应于anyOf
模式表示。您需要使用完整的表示或anyOf
模式设计来定义整个响应。这里有一些例子和任何响应模式