API设计中的一种常见模式是有时预取相关实体,而在其他时候只提供相关实体的id。
例如,在获取用户时,您可以获得相关组织:
{
"id": "user-id",
"organisation": {
"id": "org-id"
}
}
在其他时间(例如在用户列表中),您只能在同一字段中获得组织ID。
{
"id": "user-id",
"organisation": "org-id"
}
或者,您只能获得组织ID,但在不同的命名字段中:
{
"id": "user-id",
"organisationId": "org-id"
}
我的问题是,我们可以在Swagger中定义这样的变量模式吗?我们当然可以定义一个UserWithOrganisation
和一个UserWithoutOrganisation
,但如果我们有几个关系,那么这个问题就会很快失控。
在第一个呈现的案例中,字段的类型需要是基元或对象。
在第二种情况下,organisation
属性或organisationId
属性存在,但从不同时存在,也总是一个。