我在swagger2.0的“定义”部分定义了以下内容。我首先定义了时间戳的格式,我将在许多对象的属性中使用它来实现不同的目的,比如创建的时间戳和最后更新的时间戳。
definitions:
TimeStamp:
title: Timestamp format
description: ISO 8681, "2016-08-18T17:33:00Z"
type: string
pattern: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z
Application:
title: An application
type: object
properties:
cDtm:
title: Creation timestamp
description: Some description
type: string
pattern:\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z
但是,在定义“Application”对象的“cDtm”属性时,我无法找到重用时间戳定义的方法。如果我使用“$ref”沿着“title”、“description”,我会得到一个警告“不允许在'$ref'旁边使用兄弟值”。如果我不使用“$ref”,我需要重复上面的类型和模式定义。
所以,我的问题是,有没有一种方法可以使用$ref来重用字符串模式定义,但仍然能够为定义的属性提供新的标题和描述?
谢谢!
必应
2条答案
按热度按时间5f0d552i1#
OpenAPI规范包含了针对这种格式的内置
format: date-time
,所以实际上这里并不需要pattern
。而应用途:如果出于某种原因,您想坚持使用
pattern
,可以使用以下解决方法。基本上,如果将$ref
Package 到allOf
中,就可以向$ref
“添加”属性。这在Swagger编辑器和Swagger UI中有效,但其他工具支持可能会有所不同。还要记住,默认情况下,
pattern
作为部分匹配工作。要强制精确匹配,请将模式表达式包含在^..$
中:0qx6xfy62#