包括一个文件
在给出的示例中,error.json
可以包含任何有效的模式。所以像这样简单的事情就可以了:
{"type":"object","properties":{"message":{"type":"string"}}}
$schema
包含和之类的属性也很好title
:
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"title" : "Error Schema",
"type" : "object",
"properties" : {
"message" : { "type" : "string" },
"statusCode": { "type": "number" },
"itemsArray": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
当您已经在 AWS 中定义了模型但没有无服务器 yaml 来构建它们时,这尤其方便。您可以简单地将架构复制出 AWS 控制台,将 json 粘贴到文件中,然后使用schema: ${file()}
问题中提到的语法。据我所知,您可以让 AWS 控制台接受的任何内容都可以。
干燥
我不知道如何从无服务器文件中的其他模型中引用模型,但您可以使用与插件作者相同的方法,只需将需要重用的任何内容models
放在更容易重用的地方。插件作者使用commonModelSchemaFragments
.
所以如果你有一些像这样的片段:
commonModelSchemaFragments:
# defining common fragments means you can reference them with a single line
StringArrayFragment:
type: array
items:
type: string
HttpResponse:
type: object
properties:
message:
type: string
statusCode:
type: number
您可以像这样在模型中引用这些片段:
-
name: HttpStatusResponse
contentType: "application/json"
schema:
type: object
properties:
serverResponse:
${self:custom.commonModelSchemaFragments.HttpResponse}
messageArray:
${self:custom.commonModelSchemaFragments.StringArrayFragment}
标记属性可选
您可以通过将属性标记为 来完成此操作required
。只需提供所有属性的列表,除了您希望成为optional的那些。它的 json 模式如下所示:
{
"type": "object",
"required": ["message"],
"properties": {
"optionalMessage": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
您可以在无服务器文件中使用这样的 yaml 来构建它:
-
name: OptionalResponse
contentType: "application/json"
schema:
type: object
required:
- "message"
properties:
message:
type: string
optionalMessage:
type: string
关于请求验证的说明
标记属性required
或optional
仅在打开请求正文验证时才重要:
我不知道使用任何特殊的无服务器语法打开请求验证的方法。看起来您可以在该resources
部分中执行此操作,但我还没有尝试过。 来源。