You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swagger中仅针对枚举部分值设置非必填?

解决方案

你无法直接为枚举中的单个值设置“非必填”属性,因为字段的必填性是针对整个字段而非字段取值。不过可以通过oneOf组合两种场景来实现你的需求:

  • 场景1:必须提供attrKey字段,且取值为枚举中的A、B、D(排除C)
  • 场景2:不提供attrKey字段(对应你需要的“C值非必填”的情况)

修改后的主YAML Schema如下:

type: object
oneOf:
  # 必须提供attrKey,且值为A/B/D
  - properties:
      attrKey:
        allOf:
          - $ref: '../schemas/MyEnum.yaml'
          - not:
              enum: [C]
    required:
      - attrKey
  # 不提供attrKey字段
  - not:
      required:
        - attrKey
    additionalProperties: true

说明

  • 第一个分支强制attrKey存在,同时通过not规则排除了枚举中的C值,确保只能填入A、B、D
  • 第二个分支限制attrKey不能出现在请求中,对应你希望C值可省略的场景
  • oneOf保证请求只会符合其中一种规则,避免逻辑冲突

内容的提问来源于stack exchange,提问作者Marek Bernád

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 11:50:05