

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Basisabfragen erstellen (VTL)
<a name="configuring-resolvers"></a>

**Anmerkung**  
Wir unterstützen jetzt hauptsächlich die APPSYNC\_JS-Laufzeit und ihre Dokumentation. [Bitte erwägen Sie, die APPSYNC\_JS-Laufzeit und ihre Anleitungen hier zu verwenden.](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers-js.html)

GraphQL-Resolver verbinden die Felder in einem Schema mit einer Datenquelle. Resolver sind der Mechanismus, mit dem Anfragen erfüllt werden. AWS AppSync kann Resolver automatisch aus einem Schema erstellen und verbinden oder ein Schema erstellen und Resolver aus einer vorhandenen Tabelle verbinden, ohne dass Sie Code schreiben müssen.

Resolver, die AWS AppSync verwendet werden JavaScript , um einen GraphQL-Ausdruck in ein Format zu konvertieren, das die Datenquelle verwenden kann. Alternativ können Mapping-Vorlagen in [Apache Velocity Template Language (VTL)](https://velocity.apache.org/engine/2.0/vtl-reference.html) geschrieben werden, um einen GraphQL-Ausdruck in ein Format zu konvertieren, das die Datenquelle verwenden kann.

In diesem Abschnitt erfahren Sie, wie Sie Resolver mithilfe von VTL konfigurieren. [Eine einführende Programmieranleitung im Stil eines Tutorials zum Schreiben von Resolvern finden Sie im Programmierhandbuch für [Resolver-Mapping-Vorlagen. Hilfsprogramme, die Sie beim Programmieren](resolver-mapping-template-reference-programming-guide.md#aws-appsync-resolver-mapping-template-reference-programming-guide) verwenden können, finden Sie in der Kontextreferenz für Resolver-Mapping-Vorlagen.](resolver-context-reference.md#aws-appsync-resolver-mapping-template-context-reference) AWS AppSync verfügt außerdem über integrierte Test- und Debug-Workflows, die Sie verwenden können, wenn Sie von Grund auf neu bearbeiten oder Inhalte erstellen. Weitere Informationen finden Sie unter Resolver [testen und debuggen](test-debug-resolvers.md#aws-appsync-test-debug-resolvers).

Wir empfehlen, diese Anleitung zu befolgen, bevor Sie versuchen, eines der oben genannten Tutorials zu verwenden.

In diesem Abschnitt erfahren Sie, wie Sie einen Resolver erstellen, einen Resolver für Mutationen hinzufügen und erweiterte Konfigurationen verwenden.

## Erstellen Sie Ihren ersten Resolver
<a name="create-your-first-resolver"></a>

In Anlehnung an die Beispiele aus den vorherigen Abschnitten besteht der erste Schritt darin, einen Resolver für Ihren `Query` Typ zu erstellen.

------
#### [ Console ]

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [AppSync Konsole](https://console.aws.amazon.com/appsync/).

   1. Wählen Sie im **APIs Dashboard** Ihre GraphQL-API aus.

   1. **Wählen Sie in der **Seitenleiste** Schema aus.**

1. **Auf der rechten Seite der Seite befindet sich ein Fenster namens Resolvers.** Dieses Feld enthält eine Liste der Typen und Felder, wie sie in Ihrem **Schemafenster** auf der linken Seite der Seite definiert sind. Sie können Resolver an Felder anhängen. Wählen Sie beispielsweise unter dem **Abfragetyp** neben dem `getTodos` Feld die Option **Anhängen** aus.

1. Wählen Sie auf der Seite „**Resolver erstellen**“ die Datenquelle aus, die Sie im Handbuch [Datenquellen anhängen](https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html) erstellt haben. Im Fenster **Zuordnungsvorlagen konfigurieren** können Sie mithilfe der Dropdownliste auf der rechten Seite sowohl die generischen Vorlagen für die Anfrage als auch die Vorlage für die Antwortzuordnung auswählen oder Ihre eigenen erstellen.
**Anmerkung**  
Die Kopplung einer Vorlage für die Zuordnung von Anfragen mit einer Vorlage für die Zuordnung von Antworten wird als Unit-Resolver bezeichnet. Unit-Resolver sind in der Regel für Routineoperationen vorgesehen. Wir empfehlen, sie nur für einzelne Operationen mit einer kleinen Anzahl von Datenquellen zu verwenden. Für komplexere Operationen empfehlen wir die Verwendung von Pipeline-Resolvern, die mehrere Operationen mit mehreren Datenquellen nacheinander ausführen können.  
Weitere Informationen zum Unterschied zwischen Vorlagen für die Zuordnung von Anfragen und Antworten finden Sie unter [Unit-Resolver](https://docs.aws.amazon.com//appsync/latest/devguide/resolver-mapping-template-reference-overview.html#unit-resolvers).  
Weitere Informationen zur Verwendung von Pipeline-Resolvern finden Sie unter [Pipeline-Resolver](pipeline-resolvers.md#aws-appsync-pipeline-resolvers).

1. Für allgemeine Anwendungsfälle verfügt die AWS AppSync Konsole über integrierte Vorlagen, mit denen Sie Elemente aus Datenquellen abrufen können (z. B. Abfragen aller Elemente, einzelne Suchvorgänge usw.). In der einfachen Version des Schemas aus [Designing your schema](designing-your-schema.md#aws-appsync-designing-your-schema), in der `getTodos` es keine Paginierung gab, sieht die Vorlage für die Anforderungszuweisung zum Auflisten von Elementen beispielsweise wie folgt aus:

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

1. Sie benötigen immer eine Vorlage für die Antwortzuweisung, die der Anfrage beiliegt. Die Konsole stellt eine Standardvorlage mit dem folgenden Pass-Through-Wert für Listen bereit:

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

   In diesem Beispiel hat das `context`-Objekt (mit dem Alias `$ctx`) für Listen mit Elementen die Form `$context.result.items`. Wenn die GraphQL-Operation ein einzelnes Element zurückgibt, würde es sich um `$context.result` handeln. AWS AppSync stellt Hilfsfunktionen für allgemeine Operationen bereit, z. B. die oben aufgelistete Funktion `$util.toJson`, mit denen die Antworten richtig formatiert werden können. Eine vollständige Liste der Funktionen finden Sie unter [Referenz zum Resolver Mapping Template Utility.](resolver-util-reference.md#aws-appsync-resolver-mapping-template-util-reference)

1. Wählen Sie „**Resolver speichern**“.

------
#### [ API ]

1. Erstellen Sie ein Resolver-Objekt, indem Sie die [https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateResolver.html](https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateResolver.html)API aufrufen.

1. Sie können die Felder Ihres Resolvers ändern, indem Sie die [https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateResolver.html](https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateResolver.html)API aufrufen.

------
#### [ CLI ]

1. Erstellen Sie einen Resolver, indem Sie den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appsync/create-resolver.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appsync/create-resolver.html)Befehl ausführen.

   Für diesen speziellen Befehl müssen Sie 6 Parameter eingeben:

   1. Die `api-id` Ihrer API.

   1. Der `type-name` Typ, den Sie in Ihrem Schema ändern möchten. Im Konsolenbeispiel war das`Query`.

   1. Das `field-name` Feld, das Sie in Ihrem Typ ändern möchten. Im Konsolenbeispiel war das`getTodos`.

   1. Die `data-source-name` der Datenquelle, die Sie im Handbuch [Datenquellen anhängen](https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html) erstellt haben.

   1. Der`request-mapping-template`, welcher der Hauptteil der Anfrage ist. Im Konsolenbeispiel lautete das:

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

   1. Das`response-mapping-template`, was der Hauptteil der Antwort ist. Im Konsolenbeispiel lautete das:

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

   Ein Beispielbefehl könnte so aussehen:

   ```
   aws appsync create-resolver --api-id abcdefghijklmnopqrstuvwxyz --type-name Query --field-name getTodos --data-source-name TodoTable --request-mapping-template "{ "version" : "2017-02-28", "operation" : "Scan", }" --response-mapping-template ""$"util.toJson("$"ctx.result.items)"
   ```

   Eine Ausgabe wird in der CLI zurückgegeben. Hier ein Beispiel:

   ```
   {
       "resolver": {
           "kind": "UNIT",
           "dataSourceName": "TodoTable",
           "requestMappingTemplate": "{ version : 2017-02-28, operation : Scan, }",
           "resolverArn": "arn:aws:appsync:us-west-2:107289374856:apis/abcdefghijklmnopqrstuvwxyz/types/Query/resolvers/getTodos",
           "typeName": "Query",
           "fieldName": "getTodos",
           "responseMappingTemplate": "$util.toJson($ctx.result.items)"
       }
   }
   ```

1. Führen Sie den [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appsync/update-resolver.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appsync/update-resolver.html)Befehl aus, um die Vorlagen für die and/or Feldzuweisung eines Resolvers zu ändern.

   Mit Ausnahme des `api-id` Parameters werden die im `create-resolver` Befehl verwendeten Parameter durch die neuen Werte aus dem `update-resolver` Befehl überschrieben.

------

## Einen Resolver für Mutationen hinzufügen
<a name="adding-a-resolver-for-mutations"></a>

Der nächste Schritt besteht darin, einen Resolver für Ihren `Mutation` Typ zu erstellen.

------
#### [ Console ]

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [AppSync Konsole](https://console.aws.amazon.com/appsync/).

   1. Wählen Sie im **APIs Dashboard** Ihre GraphQL-API aus.

   1. **Wählen Sie in der **Seitenleiste** Schema aus.**

1. Wählen Sie unter dem **Mutationstyp** neben dem `addTodo` Feld die Option **Anhängen** aus.

1. Wählen Sie auf der Seite „**Resolver erstellen**“ die Datenquelle aus, die Sie im Handbuch [Datenquellen anhängen](https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html) erstellt haben.

1. Im Fenster **Zuordnungsvorlagen konfigurieren** müssen Sie die Anforderungsvorlage ändern, da es sich um eine Mutation handelt, bei der Sie DynamoDB ein neues Element hinzufügen. Verwenden Sie die folgende Abfrage-Zuweisungsvorlage:

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

1. AWS AppSync konvertiert automatisch die im `addTodo` Feld definierten Argumente aus Ihrem GraphQL-Schema in DynamoDB-Operationen. Im vorherigen Beispiel werden Datensätze in DynamoDB mit dem Schlüssel von gespeichert`id`, der vom Mutationsargument as übergeben wird. `$ctx.args.id` Alle anderen Felder, die Sie durchlaufen, werden automatisch DynamoDB-Attributen mit zugeordnet. `$util.dynamodb.toMapValuesJson($ctx.args)`

   Verwenden Sie für diesen Resolver die folgende Antwortzuweisungsvorlage:

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

   AWS AppSync unterstützt auch Test- und Debug-Workflows für die Bearbeitung von Resolvern. Sie können ein `context`-Mock-Objekt verwenden, um den transformierten Wert der Vorlage vor dem Aufrufen anzuzeigen. Optional können Sie die vollständige Anforderungsausführung für eine Datenquelle interaktiv anzeigen, während Sie eine Abfrage ausführen. [Weitere Informationen finden Sie unter [Resolver testen und debuggen und Überwachen und Protokollieren](test-debug-resolvers.md#aws-appsync-test-debug-resolvers).](monitoring.md#aws-appsync-monitoring)

1. Wählen Sie „Resolver **speichern**“.

------
#### [ API ]

Sie können dies auch tun, APIs indem Sie die Befehle im Abschnitt [Erstellen Sie Ihren ersten Resolver](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html#create-your-first-resolver) und die Parameterdetails aus diesem Abschnitt verwenden.

------
#### [ CLI ]

Sie können dies auch in der CLI tun, indem Sie die Befehle im Abschnitt [Create your first resolver](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html#create-your-first-resolver) und die Parameterdetails aus diesem Abschnitt verwenden.

------

Wenn Sie die erweiterten Resolver nicht verwenden, können Sie zu diesem Zeitpunkt mit der Verwendung Ihrer GraphQL-API beginnen, wie [unter Verwenden Ihrer](using-your-api.md#aws-appsync-using-your-api) API beschrieben.

## Fortgeschrittene Resolver
<a name="advanced-resolvers"></a>

Wenn Sie dem Abschnitt „Erweitert“ folgen und unter [Entwerfen Ihres Schemas](designing-your-schema.md#aws-appsync-designing-your-schema) für einen paginierten Scan ein Beispielschema erstellen, verwenden Sie stattdessen die folgende Anforderungsvorlage für das `getTodos` Feld:

```
{
    "version" : "2017-02-28",
    "operation" : "Scan",
    "limit": $util.defaultIfNull(${ctx.args.limit}, 20),
    "nextToken": $util.toJson($util.defaultIfNullOrBlank($ctx.args.nextToken, null))
}
```

In diesem Paginierungsanwendungsfall ist die Antwortzuweisung mehr als nur ein Pass-Through, da sie sowohl den *Cursor* (damit der Kunde weiß, mit welcher Seite das nächste Mal begonnen wird) als auch den Ergebnissatz enthält. Die Zuweisungsvorlage sieht folgendermaßen aus:

```
{
    "todos": $util.toJson($context.result.items),
    "nextToken": $util.toJson($context.result.nextToken)
}
```

Die Felder in der vorherigen Antwortzuweisungsvorlage sollten mit den in Ihrem `TodoConnection`-Typ definierten Feldern übereinstimmen.

Für Beziehungen, bei denen Sie eine `Comments` Tabelle haben und das Kommentarfeld für den Typ auflösen (was den `Todo` Typ von zurückgibt`[Comment]`), können Sie eine Zuordnungsvorlage verwenden, die eine Abfrage für die zweite Tabelle ausführt. Dazu müssen Sie bereits eine Datenquelle für die `Comments` Tabelle erstellt haben, wie unter Hinzufügen [einer Datenquelle](attaching-a-data-source.md#aws-appsync-getting-started-build-a-schema-from-scratch) beschrieben.

**Anmerkung**  
Wir verwenden einen Abfragevorgang für eine zweite Tabelle nur zur Veranschaulichung. Sie könnten stattdessen eine andere Operation gegen DynamoDB verwenden. Darüber hinaus könnten Sie die Daten aus einer anderen Datenquelle abrufen, z. B. AWS Lambda aus Amazon OpenSearch Service, da die Beziehung durch Ihr GraphQL-Schema gesteuert wird.

------
#### [ Console ]

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die [AppSync Konsole](https://console.aws.amazon.com/appsync/).

   1. Wählen Sie im **APIs Dashboard** Ihre GraphQL-API aus.

   1. **Wählen Sie in der **Seitenleiste** Schema aus.**

1. Wählen Sie unter dem Typ **Todo** neben dem Feld die `comments` Option **Anhängen** aus.

1. Wählen Sie auf der Seite „**Resolver erstellen**“ die Datenquelle für die Tabelle „**Kommentare**“ aus. Der Standardname für die Tabelle **Kommentare** aus den Schnellstartanleitungen lautet`AppSyncCommentTable`, er kann jedoch variieren, je nachdem, welchen Namen Sie der Tabelle gegeben haben.

1. Fügen Sie Ihrer Vorlage für die Anforderungszuweisung den folgenden Ausschnitt hinzu:

   ```
   {
       "version": "2017-02-28",
       "operation": "Query",
       "index": "todoid-index",
       "query": {
           "expression": "todoid = :todoid",
           "expressionValues": {
               ":todoid": {
                   "S": $util.toJson($context.source.id)
               }
           }
       }
   }
   ```

1. `context.source` verweist auf das übergeordnete Objekt des aktuellen Felds, das aufgelöst wird. In diesem Beispiel verweist `source.id` auf das `Todo`-Objekt, das dann für den Abfrageausdruck verwendet wird.

   Sie können die Pass-Through-Antwortzuweisungsvorlage folgendermaßen verwenden:

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

1. Wählen Sie „Resolver **speichern**“.

1. Gehen Sie abschließend zurück zur **Schemaseite** in der Konsole, fügen Sie dem `addComment` Feld einen Resolver hinzu und geben Sie die Datenquelle für die `Comments` Tabelle an. Die Anforderungszuweisungsvorlage ist in diesem Fall eine einfache `PutItem`-Anweisung mit der spezifischen `todoid`, die als Argument kommentiert ist, aber Sie verwenden das Dienstprogramm `$utils.autoId()` zum Erstellen eines eindeutigen Sortierschlüssels für den Kommentar:

   ```
   {
       "version": "2017-02-28",
       "operation": "PutItem",
       "key": {
           "todoid": { "S": $util.toJson($context.arguments.todoid) },
           "commentid": { "S": "$util.autoId()" }
       },
       "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
   }
   ```

   Verwenden Sie folgendermaßen eine Pass-Through-Antwortvorlage:

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

------
#### [ API ]

Sie können dies auch tun, APIs indem Sie die Befehle im Abschnitt [Erstellen Sie Ihren ersten Resolver](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html#create-your-first-resolver) und die Parameterdetails in diesem Abschnitt verwenden.

------
#### [ CLI ]

Sie können dies auch in der CLI tun, indem Sie die Befehle im Abschnitt [Create your first resolver](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html#create-your-first-resolver) und die Parameterdetails aus diesem Abschnitt verwenden.

------