我需要指定我的端点有一个必填字段,一个可选字段,并对任何数量的字段开放(可以在没有验证的情况下发送)。
例如,对于端点/user
user_id: str, mandatory
timestamp_utc: timestamp, optional
..*accept_any_extra_fields**..
所以如果有人向我的端点发送下面的JSON,端点应该接受它
{ "user_id": 1,
"name": "Sam",
"location": "USA"
}
但是如果发送以下JSON,则失败,因为它不包含user_id
。
{ "name": "Sam",
"location": "USA"
}
它应该失败。
我是OpenAPI/Swagger的新手。我知道我可以发送额外的数据。但是我如何将其描述为OpenAPI上的文档,以便一个人(或程序)知道他们可以发送任何字段(例如,名称,位置)沿着user_id
2条答案
按热度按时间4c8rllxm1#
additionalProperties
关键字允许模式具有除properties
部分中列出的属性之外的其他属性。实际上OpenAPI模式是open to extension by default,缺少
additionalProperties
关键字。然而,一些工具认为缺少additionalProperties
是“不允许的附加属性”,因此最好显式添加additionalProperties: true
/additionalProperties: {}
以防万一。如果额外的属性限于特定的数据类型,例如
string
,则使用mrzz3bfm2#
你使用Java-Spring吗?我在我的Spring控制器中使用Swagger in Annotation方法,在java代码中,你可以通过这种方式指定你需要的参数:
注解@ApiOperation用于描述您的endpint。
注解@ApiParam用于描述参数的特性,所需的属性用于通知。
不要忘记添加swagger依赖项,here在maven上。
您还可以使用YAML生成API文档。例如here。请检查用户/登录的端点。
我希望我的回答能对你有所帮助。