能否在YAML中设置条件必填字段?API参数规则如何表达?
能否在YAML中表达条件必填的字段要求?
答案是肯定的,但要分场景来看——单纯的YAML本身只是数据序列化格式,没有内置的条件校验能力,但如果是在OpenAPI(或Swagger)这类基于YAML的API规范中,你完全可以精准描述这种条件必填的规则。
针对你提到的API端点参数规则:
若同时提供A和B,则C为可选;若缺失A或B中的任意一个,则C为必填。
可以通过OpenAPI的oneOf关键字结合required字段来实现,下面是具体的YAML示例:
paths: /your-endpoint: post: requestBody: content: application/json: schema: type: object oneOf: # 分支1:同时提供A和B,C可选 - type: object properties: A: type: string # 根据你的实际参数类型调整 B: type: string C: type: string required: [A, B] # 分支2:缺失A或B其中一个,C必填 - type: object properties: A: type: string B: type: string C: type: string required: [C] # 确保不会同时存在A和B not: required: [A, B]
逻辑解释:
oneOf表示请求体必须严格匹配其中一个分支的规则,两个分支互斥;- 第一个分支明确要求
A和B都必填,C则为可选字段; - 第二个分支要求
C必填,同时通过not: {required: [A, B]}确保不会同时出现A和B(也就是要么缺A,要么缺B,或者两者都缺,但C必须存在)。
如果你的场景不是OpenAPI,而是自定义的YAML配置文件,那YAML本身没法直接表达这种条件约束,需要在解析YAML的应用程序代码里添加校验逻辑来实现这个规则。
内容的提问来源于stack exchange,提问作者user1332148
相关产品推荐
相关产品推荐

