翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
GraphQL オブジェクトタイプには名前とフィールドがあり、これらのフィールドにはサブフィールドを使用できます。最終的には、オブジェクトタイプのフィールドを、クエリの各要素を表すスカラー型に解決する必要があります。オブジェクトタイプとスカラーの詳細については、GraphQL ウェブサイトの「スキーマとタイプ
デフォルトの GraphQL スカラーセットに加えて、 では、 AWS プレフィックスで始まるサービス定義スカラーを使用 AWS AppSync することもできます。 AWS AppSync では、ユーザー定義 (カスタム) スカラーの作成はサポートされていません。デフォルトまたは AWS スカラーのいずれかを使用する必要があります。
カスタムオブジェクトタイプのプレフィックスとして AWS を使用することはできません。
次のセクションはスキーマタイピングのリファレンスです。
デフォルトスカラー
GraphQL は、次のデフォルトスカラー を定義します。
ID
-
オブジェクトの一意な識別子。このスカラーは、
String
のようにシリアル化されますが、人間が読めることは意図していません。 String
-
UTF-8 文字シーケンス。
Int
-
-(231) と 231-1の間の整数値。
Float
-
IEEE 754 浮動小数点値
Boolean
-
ブール値 (
true
またはfalse
)。
AWS AppSync スカラー
AWS AppSync は、次のスカラーを定義します。
AWSDate
-
拡張機能ISO 8601 の日付
形式の文字列 YYYY-MM-DD
。 AWSTime
-
拡張機能ISO 8601
形式の文字列 hh:mm:ss.sss
。 AWSDateTime
-
拡張機能ISO 8601 の日時番号
形式の文字列 YYYY-MM-DDThh:mm:ss.sssZ
。
注記
AWSDate
、AWSTime
、および AWSDateTime
スカラーは、必要に応じてタイムゾーンオフセット1970-01-01Z
、1970-01-01-07:00
、 および 1970-01-01+05:30
はすべて AWSDate
に有効です。タイムゾーンのオフセットは、Z
(UTC)、または時間と分 (およびオプションで秒) のオフセットのいずれかである必要があります。例えば、±hh:mm:ss
と指定します。ISO 8601 標準には含まれていませんが、タイムゾーンオフセットの第 2 フィールドは有効と見なされます。
AWSTimestamp
-
1970-01-01-T00:00Z
前後の秒数を表す整数値。 AWSEmail
-
RFC 822
で定義される local-part@domain-part
形式のメールアドレス。 AWSJSON
-
JSON 文字列。すべての有効な JSON コンストラクトは、リテラルな入力文字列としてではなく、マップ、リスト、スカラー値として自動的に解析され、リゾルバーマッピングテンプレートにロードされます。引用符で囲まれていない文字列、または無効な JSON は GraphQL 検証エラーになります。
AWSPhone
-
電話番号 この値は文字列として保存されます。電話番号には、スペースまたはハイフンのいずれかを指定して、数字グループを区切ることができます。国番号のない電話番号は、北米番号計画 (NANP)
に紐づいている米国/北米の電話番号とみなされます。 AWSURL
-
RFC 1738
によって定義される URL。例えば、 https://www.amazon.com/dp/B000NZW3KC/
、mailto:example@example.com
です。URL にはスキーマ (http
,mailto
) および 2 つのフォワードスラッシュ (//
) をパス部分に入れる必要があります。 AWSIPAddress
-
有効な IPv4 または IPv6 アドレス。IPv4 アドレスはクアッドドット表記で想定されます (
123.12.34.56
)。IPv6 アドレスは、角カッコで囲まれていないコロン区切りの形式で想定されます (1a2b:3c4b::1234:4567
)。オプションの CIDR サフィックス (123.45.67.89/16
) を含めることで、サブネットマスクを示すことができます。
スキーマの使用例
以下に示す GraphQL スキーマの例は、すべてのカスタムのスカラーを「オブジェクト」として使用するとともに、基本的なput、get、および list 操作にリゾルバーリクエストとレスポンステンプレートを使用しています。最後に、 クエリとミューテーションを実行するときに、この をどのように 使用できるかの例を示します。
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
のリクエストテンプレートは次のようになります。putObject
は PutItem
オペレーションを使用して Amazon DynamoDB テーブル内の項目を作成または更新します。このコードスニペットには、データソースとして Amazon DynamoDB テーブルが設定されていないことに注意してください。これは例としてのみ使用されています。
{ "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
のリクエストテンプレートは次のようになります。getObject
は GetItem
オペレーションを開始し、指定されたプライマリキーを持つ項目の属性のセットを取得します。このコードスニペットには、データソースとして Amazon DynamoDB テーブルが設定されていないことに注意してください。これは例としてのみ使用されています。
{ "version": "2017-02-28", "operation": "GetItem", "key": { "id": $util.dynamodb.toDynamoDBJson($ctx.args.id), } }
getObject
のレスポンステンプレートは結果を返します。
$util.toJson($ctx.result)
listObjects
のリクエストテンプレートは次のようになります。listObjects
は Scan
オペレーションを使用して 1 つ以上の項目と属性を返します。このコードスニペットには、データソースとして Amazon DynamoDB テーブルが設定されていないことに注意してください。これは例としてのみ使用されています。
{ "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 } }