

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.

# Utilisation du point de terminaison HTTP REST pour se connecter à une instance de base de données Neptune
<a name="access-graph-gremlin-rest"></a>

Amazon Neptune fournit un point de terminaison HTTP pour les requêtes Gremlin. L'interface REST est compatible avec n'importe quelle version Gremlin de votre cluster de bases de données (consultez la [page de mise à jour](engine-releases.md) correspondant à la version de moteur Neptune que vous exécutez pour déterminer la version Gremlin prise en charge).

**Note**  
Comme indiqué dans [Chiffrement des connexions à votre base de données Amazon Neptune avec SSL/HTTPS](security-ssl.md), vous devez désormais vous connecter via HTTPS au lieu de HTTP dans Neptune. En outre, Neptune ne prend actuellement pas en charge le HTTP/2 pour les requêtes d'API REST. Les clients doivent utiliser HTTP/1.1 lorsqu'ils se connectent aux points de terminaison.

Les instructions suivantes vous guident à travers la connexion au point de terminaison Gremlin à l'aide de la commande `curl` et de HTTPS. Vous devez suivre ces instructions à partir d'une instance Amazon EC2 dans le même cloud privé virtuel (VPC) (VPC) que l'instance de base de données Neptune.

Le point de terminaison HTTPS pour les requêtes Gremlin dans une instance de base de données Neptune est `https://your-neptune-endpoint:port/gremlin`.

**Note**  
Pour découvrir comment trouver le nom d'hôte de l'instance de base de données Neptune, consultez la section [Connexion aux points de terminaison Amazon Neptune](feature-overview-endpoints.md).

## Pour se connecter à Neptune à l'aide du point de terminaison HTTP REST
<a name="access-graph-gremlin-rest-connect"></a>

L'exemple suivant utilise **curl** pour soumettre une requête Gremlin via HTTP **POST**. La requête est soumise au format JSON dans le corps de la publication en tant que propriété `gremlin`.

```
curl -X POST -d '{"gremlin":"g.V().limit(1)"}' https://your-neptune-endpoint:port/gremlin
```

L'exemple précédent renvoie le premier sommet du graphe en utilisant la traversée `g.V().limit(1)`. Pour interroger autre chose, remplacez cette traversée par une autre traversée Gremlin.

**Important**  
Par défaut, le point de terminaison REST renvoie tous les résultats dans un seul ensemble de résultats JSON. Si cet ensemble de résultats est trop volumineux, une exception `OutOfMemoryError` peut être générée dans l'instance de base de données Neptune.  
Pour éviter cette exception, activez les réponses segmentées (résultats renvoyés sous la forme d'une série de réponses distinctes). Consultez [Utilisation d'en-têtes de suivi HTTP facultatifs pour activer les réponses Gremlin en plusieurs parties](access-graph-gremlin-rest-trailing-headers.md).

Bien que les demandes HTTP **POST** soient recommandées pour envoyer des requêtes Gremlin, il est également possible d'utiliser des demandes HTTP **GET** :

```
curl -G "https://your-neptune-endpoint:port?gremlin=g.V().count()"
```

**Note**  
Neptune ne prend pas en charge la propriété `bindings`.

# Utilisation d'en-têtes de suivi HTTP facultatifs pour activer les réponses Gremlin en plusieurs parties
<a name="access-graph-gremlin-rest-trailing-headers"></a>

Par défaut, la réponse HTTP aux requêtes Gremlin est renvoyée dans un seul ensemble de résultats JSON. Un ensemble de résultats très volumineux peut générér une exception `OutOfMemoryError` dans l'instance de base de données.

Vous pouvez toutefois activer les *réponses segmentées* (réponses renvoyées en plusieurs parties distinctes). Pour ce faire, incluez un en-tête « trailer » (`te: trailers`) d'encodage de transfert (TE) dans la demande. Consultez la [page MDN (sur les en-têtes de demande TE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/TE)) pour plus d'informations sur ces en-têtes.

Lorsqu'une réponse est renvoyée en plusieurs parties, il peut être difficile de diagnostiquer un problème qui survient après la réception de la première partie, car la première partie arrive avec le code de statut HTTP `200` (OK). En cas d'échec ultérieur, le corps du message contient généralement une réponse corrompue, à la fin de laquelle Neptune ajoute un message d'erreur.

Pour faciliter la détection et le diagnostic de ce type d'échec, Neptune inclut également deux nouveaux champs d'en-tête dans les en-têtes suivants de chaque segment de réponse :
+ `X-Neptune-Status` : contient le code de réponse suivi d'un nom court. Par exemple, en cas de réussite, l'en-tête final serait : `X-Neptune-Status: 200 OK`. En cas d'échec, le code de réponse est l'un des [codes d'erreur du moteur Neptune](errors-engine-codes.md), tel que `X-Neptune-Status: 500 TimeLimitExceededException`.
+ `X-Neptune-Detail` : est vide pour les demandes qui ont abouti. En cas d'erreur, il contient le message d'erreur JSON. Étant donné que seuls les caractères ASCII sont autorisés dans les valeurs d'en-tête HTTP, la chaîne JSON est encodée en URL.

**Note**  
Neptune ne prend actuellement pas en charge la compression `gzip` des réponses segmentées. Si le client demande à la fois un encodage et une compression segmentés, Neptune ignore la compression.