和标题差不多。我在请求正文中有一个可选对象。但是,如果给定了该对象,则它必须包含几个子属性。
我的OpenAPI组件配置如下所示:
UserDetails:
type: object
properties:
surname:
type: string
givenName:
type: string
dob:
type: string
format: date
gender:
type: string
enum:
- male
- female
- others
partner:
type: object
properties:
name:
type: string
phone:
type: string
maxLength: 10
minLength: 10
pattern: ^[1-9]+[0-9]{9}$
required: [name, phone]
required:
- surname
- givenName
- dob
我正在使用express openapi validator来验证这一点。现在,我不明白这是否是express openapi validator包的问题,但可选字段(partner)的必填字段(名称、电话)从未验证过。我可以只提供合作伙伴:{},然后直接插入,或者甚至插入合作伙伴:{name:'some name',phone:'123}。应验证电话号码的长度和正则表达式。
我在定义中遗漏了什么吗?
似乎没有解决办法,但我关闭它只是为了让我的心灵平静。
就像@Helen回答的那样,这似乎是库本身的问题。在开发我的应用程序的过程中,我发现了更多的问题,这使得我使用的库Expres-openapi-validator
和另一个库swagger-Expres-middleware
对于验证请求来说更加不可靠。
我发现的另一个问题是,只有当一个值作为数组提供时,它才会使用提供的枚举进行验证:
例如。以下内容已正确验证:
UserLiabilities:
type: object
properties:
liabilities:
type: object
properties:
creditCards:
type: array
items:
allOf:
- $ref: '#/components/schemas/Provider'
- type: object
properties:
limit:
type: number
minimum: 0
此处提供程序为:
Provider:
type: object
properties:
provider:
type: string
enum: ['ABC', 'DEF', 'GHI', 'Others']
但是,如果我需要提供程序作为对象中的纯字符串(不是在上面的数组中),它不会经过验证。而且,它允许任何任意字符串:
homeLoan:
allOf:
- $ref: '#/components/schemas/Provider'
- type: object
properties:
amount:
type: number
minimum: 0
这种行为与我在上面尝试和提到的至少两个库是一致的。我不确定我在这里做错了什么,但我已经浪费了足够的时间来调试它,最终不得不在我的服务器本身解决这个问题。
以OpenAPI 3定义为例: 有没有办法重用,还是每次使用时都必须指定它?
直接上代码看注释: <?php namespace Yurun\Util\YurunHttp; /** * 所有属性的常量定义 * * PRIVATE_ 开头的为内部属性,请勿使用 */ abstract class Attributes { /** * 客户端参数 */ const OPTIONS = 'options'; /**
4.6.6 强制属性操作符 在程序中,我们有时需要对同一个存储单元以不同的属性来访问,或对一些不确定的存储属性需要显式指定等,这时,我们就需要强制属性操作符PTR。该操作符的作用有点象C语言中的类型强制方法。 对于指令:MOV [BX], 1H,其目标操作数[BX]是寄存器间接寻址方式,它指向一个存储单元。在作传送操作时,是把“1H”扩展成8位作字节传送,还是扩展成16位作字传送呢?这就使该指令具
有大量属性能用来控制 Hibernate 在运行期的行为。它们都是可选的,并拥有适当的默认值。 警告 其中一些属性是"系统级(system-level)的"。系统级属性只能通过java -Dproperty=value 或 hibernate.properties 来设置,而不能用上面描述的其他方法来设置。 表 3.3. Hibernate 配置属性 属性名 用途 hibernate.dialec
我正在VSCode中使用OpenAPI 3编写一个API文档,扩展为OpenAPI(Swagger)Editor v4.9.1。直到今天它都运行良好-突然我的文档在所有模式声明中充满了“属性”错误。错误是:
不管怎样,都要强迫EMCALC在基础上运行。例如,我有这个代码。 sass simple不运行emCalc函数,就可以准确地生成该函数。是否需要强制sass处理器首先运行emCalc函数?