【发布时间】:2015-12-12 23:19:28
【问题描述】:
我正在开发提供 REST API 的项目。 最近我们决定将它与 Swagger 集成,为每个端点创建详细的文档。 几乎所有 REST 都已成功集成,但其中一些我们遇到了一些困难。
所以,我们有一个带有“/users”资源的 REST,默认情况下,它会按照 JSON 格式的给定条件返回用户列表,例如:
[
{
name: "user1",
age: 50,
group: "group1"
},
{
name: "user2",
age: 30,
group: "group2"
},
{
name: "user3",
age: 20,
group: "group1"
}
]
此 REST 的要求之一是按“group”字段对用户进行分组,并提供以下格式的响应:
[
group1: [
{
name: "user1",
age: 50,
group: "group1"
},
{
name: "user3",
age: 20,
group: "group1"
}]
group2: [
{
name: "user2",
age: 30,
group: "group2"
}
]
]
当查询参数 groupby 等于“group”时,我们会提供这样的响应。 因此,问题在于 Swagger 允许通过单个端点(方法和响应代码)仅提供单一响应格式。例如。我们无法为 /users 端点“200”响应代码和 GET HTTP 方法提供 2 种响应格式。
现在我完全不知道如何更改我们的 REST 设计以使其与 Swagger 兼容。
注意事项: 根据 REST 设计原则,为分组用户添加新端点似乎是不正确的分组用户不是单独的资源,而只是现有资源的附加表示。
Swagger 并不是一项严格的要求,因此对于其他 REST 文档工具的任何想法都将受到高度赞赏
【问题讨论】:
标签: rest swagger design-principles