翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
GraphQL のスカラー型
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 } }