OpenAPI 3.0.3如何在PUT接口中隐藏对象多余字段
Swagger PUT接口仅展示指定字段配置方法
你当前直接在PUT接口请求体中引用完整MyCar Schema的写法,Swagger会默认渲染该模型下的全部属性,需要通过OpenAPI原生的Schema组合能力做字段裁剪,不需要重复定义字段,有两种常用实现方式:
方案1:单接口临时裁剪,不改动原有MyCar定义
直接修改PUT接口requestBody下的schema配置即可,Swagger UI渲染时只会展示plate字段,同时会拦截其他非plate字段的传参:requestBody: description: 新的车辆牌照信息 content: application/json: schema: allOf: - $ref: '#/components/schemas/MyCar' properties: plate: type: string required: - plate additionalProperties: false这种写法会复用原有MyCar中plate字段的所有定义(类型、校验规则等),不需要重复维护字段属性,适合只有单个接口需要裁剪字段的场景。
方案2:抽离子模型,适合多接口复用同部分字段的场景
如果后续还有其他接口也只需要操作plate字段,可以在公共Schema区单独抽离车牌字段的子模型,再通过组合方式组装完整的MyCar模型:components: schemas: # 仅包含牌照字段的子模型 CarPlate: type: object properties: plate: type: string required: - plate # 完整车辆模型,组合子模型+其他专属字段 MyCar: allOf: - $ref: '#/components/schemas/CarPlate' - type: object properties: id: type: string owner: type: string配置完成后,PUT接口请求体直接引用
#/components/schemas/CarPlate即可,GET接口依然引用完整的MyCar模型,后续如果plate字段的校验规则有调整,只需要改一次CarPlate的定义,所有引用的接口都会同步生效。
不建议直接在PUT接口里硬编码重复写plate字段的定义,后续字段规则变更时需要多处修改,很容易出现配置不一致的问题。
内容的提问来源于stack exchange,提问作者Jacket
相关产品推荐
相关产品推荐

