

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Extensions
<a name="extensions-js"></a>

`extensions`contient un ensemble de méthodes permettant d'effectuer des actions supplémentaires dans vos résolveurs.

## Extensions de mise en cache
<a name="caching-extensions-js-list"></a>

**`extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, any>) : Object`**  
Élimine un élément du cache AWS AppSync côté serveur. Le premier argument est le nom du type. Le deuxième argument est le nom du champ. Le troisième argument est un objet contenant des éléments de paire clé-valeur qui spécifient la valeur de la clé de mise en cache. Vous devez placer les éléments dans l'objet dans le même ordre que les clés de mise en cache dans le résolveur mis en cache. `cachingKey` Pour plus d'informations sur la mise en cache, consultez la section Comportement de [mise en cache.](https://docs.aws.amazon.com/appsync/latest/devguide/enabling-caching.html#caching-behavior)  
**Exemple 1 :**  
Cet exemple évacue les éléments mis en cache pour un résolveur appelé `Query.allClasses` sur lequel une clé de mise en cache appelée a été utilisée. `context.arguments.semester` Lorsque la mutation est appelée et que le résolveur s'exécute, si une entrée est correctement effacée, la réponse contient une `apiCacheEntriesDeleted` valeur dans l'objet extensions qui indique le nombre d'entrées supprimées.  

```
import { util, extensions } from '@aws-appsync/utils';

export const request = (ctx) => ({ payload: null });

export function response(ctx) {
	extensions.evictFromApiCache('Query', 'allClasses', {
		'context.arguments.semester': ctx.args.semester,
	});
	return null;
}
```
Cette fonction **ne fonctionne que** pour les mutations, pas pour les requêtes.

## Extensions d'abonnement
<a name="subscription-extensions-js-list"></a>

**`extensions.setSubscriptionFilter(filterJsonObject)`**  
Définit des filtres d'abonnement améliorés. Chaque événement de notification d'abonnement est évalué par rapport aux filtres d'abonnement fournis et envoie des notifications aux clients si tous les filtres sont conformes`true`. L'argument est `filterJsonObject` (Vous trouverez plus d'informations sur cet argument ci-dessous dans la filterJsonObject section *Argument :*). Consultez la section [Filtrage amélioré des abonnements](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html).  
Vous pouvez utiliser cette fonction d'extension uniquement dans le gestionnaire de réponses d'un résolveur d'abonnement. Nous vous recommandons également de l'utiliser `util.transform.toSubscriptionFilter` pour créer votre filtre.

**`extensions.setSubscriptionInvalidationFilter(filterJsonObject)`**  
Définit les filtres d'invalidation des abonnements. Les filtres d'abonnement sont évalués par rapport à la charge utile d'invalidation, puis invalident un abonnement donné s'ils sont évalués à. `true` L'argument est `filterJsonObject` (Vous trouverez plus d'informations sur cet argument ci-dessous dans la filterJsonObject section *Argument :*). Consultez la section [Filtrage amélioré des abonnements](https://docs.aws.amazon.com/appsync/latest/devguide/aws-appsync-real-time-enhanced-filtering.html).  
Vous pouvez utiliser cette fonction d'extension uniquement dans le gestionnaire de réponses d'un résolveur d'abonnement. Nous vous recommandons également de l'utiliser `util.transform.toSubscriptionFilter` pour créer votre filtre.

**`extensions.invalidateSubscriptions(invalidationJsonObject)`**  
Utilisé pour initier l'invalidation d'un abonnement suite à une mutation. L'argument est `invalidationJsonObject` (Vous trouverez plus d'informations sur cet argument ci-dessous dans la invalidationJsonObject section *Argument :*).  
Cette extension ne peut être utilisée que dans les modèles de mappage des réponses des résolveurs de mutations.  
Vous ne pouvez utiliser qu'au maximum cinq appels de `extensions.invalidateSubscriptions()` méthode uniques par requête. Si vous dépassez cette limite, vous recevrez une erreur GraphQL.

## Argument : filterJsonObject
<a name="extensions-filterJsonObject-js"></a>

L'objet JSON définit des filtres d'abonnement ou d'invalidation. Il s'agit d'un ensemble de filtres dans un`filterGroup`. Chaque filtre est un ensemble de filtres individuels.

```
{
    "filterGroup": [
        {
           "filters" : [
                 {
                    "fieldName" : "userId",
                    "operator" : "eq",
                    "value" : 1
                }
           ]
           
        },
        {
           "filters" : [
                {
                    "fieldName" : "group",
                    "operator" : "in",
                    "value" : ["Admin", "Developer"]
                }
           ]
           
        }
    ]
}
```

Chaque filtre possède trois attributs : 
+ `fieldName`— Le champ du schéma GraphQL.
+ `operator`— Le type d'opérateur.
+ `value`— Les valeurs à comparer à la `fieldName` valeur de la notification d'abonnement.

Voici un exemple d'attribution de ces attributs :

```
{
 "fieldName" : "severity",
 "operator" : "le",
 "value" : context.result.severity
}
```

## Argument : invalidationJsonObject
<a name="extensions-invalidationJsonObject-js"></a>

`invalidationJsonObject`définit les éléments suivants :
+ `subscriptionField`— L'abonnement au schéma GraphQL à invalider. Un seul abonnement, défini comme une chaîne dans le`subscriptionField`, est considéré comme invalide.
+ `payload`— Une liste de paires clé-valeur utilisée comme entrée pour invalider les abonnements si le filtre d'invalidation est évalué par rapport à leurs valeurs. `true`

  L'exemple suivant invalide les clients abonnés et connectés utilisant l'`onUserDelete`abonnement lorsque le filtre d'invalidation défini dans le résolveur d'abonnement est évalué par rapport à la valeur. `true` `payload`

  ```
  export const request = (ctx) => ({ payload: null });
  
  export function response(ctx) {
  	extensions.invalidateSubscriptions({
  		subscriptionField: 'onUserDelete',
  		payload: { group: 'Developer', type: 'Full-Time' },
  	});
  	return ctx.result;
  }
  ```