中的标量类型Amazon AppSync - Amazon AppSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

中的标量类型Amazon AppSync

GraphQL 对象类型具有名称和字段,并且这些字段可以有子字段。最终,对象类型的字段必须解析为标量类型,表示查询的树叶。有关对象类型和标量的更多信息,请参阅模式和类型在 GraphQL 网站上。

除了一组默认的 GraphQL 标量之外,Amazon AppSync包括一组以Amazonprefix.Amazon AppSync不支持自定义标量。

注意

使用无法使用Amazon作为自定义对象类型的前缀。

GraphQL 定义了以下默认标量:

ID

对象的唯一标识符。这个标量像String但是不是意思是为了人类可读。

String

UTF-8 字符序列。

Int

介于-(2) 之间的整数值31) 和 232-1。

Float

IEEE 754 浮点值。

Boolean

ABoolean值,无论是true或者false.

Amazon AppSync定义以下标量:

AWSDate

扩展ISO 8601 日期格式的字符串YYYY-MM-DD.

AWSTime

扩展ISO 8601 时间格式的字符串hh:mm:ss.sss.

AWSDateTime

扩展ISO 8601 日期和时间格式的字符串YYYY-MM-DDThh:mm:ss.sssZ.

注意

这些区域有:AWSDateAWSTime, 和AWSDateTime标量可以选择包含时区偏差. 例如,值1970-01-01Z1970-01-01-07:00, 和1970-01-01+05:30都是有效的AWSDate. 时区偏移量必须为Z(UTC) 或以小时和分钟为单位的偏移量(以及可选的秒)。例如 ±hh:mm:ss。时区偏移中的秒字段可以视为有效,即使它不属于 ISO 8601 标准。

AWSTimestamp

表示之前或之后的秒数的整数值1970-01-01-T00:00Z.

AWSEmail

格式的电子邮件地址local-part@domain-part由定义RFC 822.

AWSJSON

JSON 字符串。将自动解析并加载到解析程序映射模板中,作为映射、列表或标量值,而不是文本输入字符串。未引号的字符串或其他方式无效的 JSON 会导致 GraphQL 验证错误。

AWSPhone

电话号码。此值以字符串形式存储。电话号码可以包含空格或连字符来分隔数字组。假设没有国家/地区代码的电话号码是遵守北美编号计划(NANP).

AWSURL

定义的 URLRFC 1738. 例如,https://www.amazon.com/dp/B000NZW3KC/mailto:example@example.com。URL 必须包含架构(httpmailto) 并且不能包含两个正斜杠 (//) 在路径部分。

AWSIPAddress

有效的 IPv4 或 IPv6 地址。IPv4 地址预计以四点符号表示法(123.12.34.56)。IPv6 地址应采用非括号、冒号分隔的格式(1a2b:3c4b::1234:4567)。你可以包含可选的 CIDR 后缀 (123.45.67.89/16) 以指示子网掩码。

架构使用示例

如果你不熟悉在中创建 GraphQL APIAmazon AppSync,或者将解析者与映射模板连接起来,我们建议首先审核设计 GraphQL API解析程序教程.

下面示例 GraphQL 架构使用所有自定义标量作为 “对象”,并显示了基本放置、获取和列出操作。最后,此示例演示了如何操作你可以使用这个何时running查询和突变。

type Mutation { putObject( email: AWSEmail, json: AWSJSON, date: AWSDate, time: AWSTime, datetime: AWSDateTime, timestamp: AWSTimestamp, url: AWSURL, phoneno: AWSPhone, ip: AWSIPAddress ): Object } type Object { id: ID! email: AWSEmail json: AWSJSON date: AWSDate time: AWSTime datetime: AWSDateTime timestamp: AWSTimestamp url: AWSURL phoneno: AWSPhone ip: AWSIPAddress } type Query { getObject(id: ID!): Object listObjects: [Object] } schema { query: Query mutation: Mutation }

使用以下请求模板:putObject

{ "version" : "2017-02-28", "operation" : "PutItem", "key" : { "id": $util.dynamodb.toDynamoDBJson($util.autoId()), }, "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args) }

的响应模板putObject为:

$util.toJson($ctx.result)

使用以下请求模板:getObject

{ "version": "2017-02-28", "operation": "GetItem", "key": { "id": $util.dynamodb.toDynamoDBJson($ctx.args.id), } }

的响应模板getObject是:

$util.toJson($ctx.result)

使用以下请求模板:listObjects

{ "version" : "2017-02-28", "operation" : "Scan", }

的响应模板listObjects是:

$util.toJson($ctx.result.items)

下面是将此架构用于 GraphQL 查询的一些示例:

mutation CreateObject { putObject(email: "example@example.com" json: "{\"a\":1, \"b\":3, \"string\": 234}" date: "1970-01-01Z" time: "12:00:34." datetime: "1930-01-01T16:00:00-07:00" timestamp: -123123 url:"https://amazon.com" phoneno: "+1 555 764 4377" ip: "127.0.0.1/8" ) { id email json date time datetime url timestamp phoneno ip } } query getObject { getObject(id:"0d97daf0-48e6-4ffc-8d48-0537e8a843d2"){ email url timestamp phoneno ip } } query listObjects { listObjects { json date time datetime } }