Swagger 什么是';必需的';在OpenAPI中真正的意思是
给定以下OpenAPI定义,以下哪些对象是有效的。只有一个。或1。和2Swagger 什么是';必需的';在OpenAPI中真正的意思是,swagger,openapi,Swagger,Openapi,给定以下OpenAPI定义,以下哪些对象是有效的。只有一个。或1。和2 Person: required: - id type: object properties: id: type: string {“id”:“} {“id”:null} {} 这归结为“required=true”是指“非空值”还是“属性必须存在”的问题 位于的JSON模式验证器表示2。无效,因为null不满足type:string约束。请注意,它不会抱怨,因为id为null,而是
Person:
required:
- id
type: object
properties:
id:
type: string
{“id”:“}
{“id”:null}
{}
位于的JSON模式验证器表示2。无效,因为
null
不满足type:string
约束。请注意,它不会抱怨,因为id
为null,而是因为null
不是字符串。但这与OpenAPI/Swagger有多大关系?OpenAPI中的required
关键字与中的含义相同:
必需的
如果对象实例的属性集包含该关键字数组值中的所有元素,则该对象实例对该关键字有效
中的措词(尽管它不是OpenAPI使用的措词)更清楚:
如果数组中的每个项都是实例中属性的名称,则对象实例对该关键字有效
也就是说,required
表示“属性必须存在”,而不管值是多少。属性值的类型
、格式
等是单独的约束,与所需
分别计算,但作为组合模式一起计算
在您的示例中:
{“id”:“}
有效:
- ✓ 根据
要求进行验证
- ✓ 值
根据”
类型:字符串进行验证
{“id”:null}
无效:
- ✓ 根据
要求进行验证
- ✗
不针对null
type:string
{}
无效:
- ✗ 不根据
要求进行验证
null
作为一种类型在OpenAPI中不受支持,但OpenAPI 3.0添加了该属性以指示该值可能是null
。因此,{“id”:null}
将根据此OpenAPI 3.0模式进行验证:
人:
必修的:
-身份证
类型:对象
特性:
身份证件:
类型:字符串
nullable:true#回答得很好,谢谢。JSON模式规范与JavaScript/JSON的null
@MarcelStör JSON模式的null
类型没有很好的一致性不是你的错,可空模式可以定义为{“type”:[“string”,“null”]}
。但是OpenAPI不支持type:null
,而是使用nullable
属性。