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.
Der Amazon Neptune HTTPS-Endpunkt OpenCypher
Themen
Anmerkung
Neptune unterstützt derzeit keine REST-API-Anfragen HTTP/2 . Kunden müssen HTTP/1.1 sie verwenden, wenn sie eine Verbindung zu Endpunkten herstellen.
OpenCypher Lese- und Schreibabfragen auf dem HTTPS-Endpunkt
Der OpenCypher HTTPS-Endpunkt unterstützt Lese- und Aktualisierungsabfragen mit der Methode GET und der POST Methode. Die Methoden DELETE und PUT werden nicht unterstützt.
In den folgenden Anweisungen erfahren Sie, wie Sie mithilfe des curl Befehls und HTTPS eine Verbindung zum OpenCypher Endpunkt herstellen. Sie müssen diese Anweisungen für eine Amazon-EC2-Instance befolgen, die sich in derselben Virtual Private Cloud (VPC) wie Ihre Neptune-DB-Instance befindet.
Die Syntax lautet wie folgt:
HTTPS://(the server):(the port number)/openCypher
Hier ist ein Beispiel für eine Leseabfrage:
Hier ist eine write/update Beispielabfrage:
Das standardmäßige OpenCypher JSON-Ergebnisformat
Das folgende JSON-Format wird entweder standardmäßig oder durch explizites Festlegen des Anforderungs-Headers auf Accept: application/json zurückgegeben. Dieses Format soll mithilfe nativer Features der meisten Bibliotheken leicht in Objekte geparst werden können.
Das zurückgegebene JSON-Dokument enthält ein einzelnes Feld (results), das die Abfragerückgabewerte enthält. Die folgenden Beispiele zeigen die JSON-Formatierung häufiger Werte.
Beispiel für eine Wertantwort:
{ "results": [ { "count(a)": 121 } ] }
Beispiel für eine Knotenantwort:
{ "results": [ { "a": { "~id": "22", "~entityType": "node", "~labels": [ "airport" ], "~properties": { "desc": "Seattle-Tacoma", "lon": -122.30899810791, "runways": 3, "type": "airport", "country": "US", "region": "US-WA", "lat": 47.4490013122559, "elev": 432, "city": "Seattle", "icao": "KSEA", "code": "SEA", "longest": 11901 } } } ] }
Beispiel für eine Beziehungsantwort:
{ "results": [ { "r": { "~id": "7389", "~entityType": "relationship", "~start": "22", "~end": "151", "~type": "route", "~properties": { "dist": 956 } } } ] }
Beispiel für eine Pfadantwort:
{ "results": [ { "p": [ { "~id": "22", "~entityType": "node", "~labels": [ "airport" ], "~properties": { "desc": "Seattle-Tacoma", "lon": -122.30899810791, "runways": 3, "type": "airport", "country": "US", "region": "US-WA", "lat": 47.4490013122559, "elev": 432, "city": "Seattle", "icao": "KSEA", "code": "SEA", "longest": 11901 } }, { "~id": "7389", "~entityType": "relationship", "~start": "22", "~end": "151", "~type": "route", "~properties": { "dist": 956 } }, { "~id": "151", "~entityType": "node", "~labels": [ "airport" ], "~properties": { "desc": "Ontario International Airport", "lon": -117.600997924805, "runways": 2, "type": "airport", "country": "US", "region": "US-CA", "lat": 34.0559997558594, "elev": 944, "city": "Ontario", "icao": "KONT", "code": "ONT", "longest": 12198 } } ] } ] }
Optionale HTTP-Header am Ende für mehrteilige Antworten OpenCypher
Diese Funktion ist ab Version 1.4.5.0 der Neptune-Engine verfügbar. https://docs.aws.amazon.com/releases/release-1.4.5.0.xml
Die HTTP-Antwort auf OpenCypher Abfragen und Aktualisierungen wird in der Regel in mehreren Abschnitten zurückgegeben. Wenn nach dem Senden der ersten Antwortblöcke (mit einem HTTP-Statuscode von 200) Fehler auftreten, kann es schwierig sein, das Problem zu diagnostizieren. Standardmäßig meldet `Neptune solche Fehler, indem es eine Fehlermeldung an den Nachrichtentext anhängt, der aufgrund des Streaming-Charakters der Antwort beschädigt sein kann.
Verwendung nachgestellter Header
Um die Fehlererkennung und -diagnose zu verbessern, können Sie nachfolgende Header aktivieren, indem Sie einen Trailer-Header mit Transfer-Encoding (TE) (te: trailers) in Ihre Anfrage aufnehmen. Anschließend fügt Neptune zwei neue Header-Felder in die Trailing-Header der Antwortblöcke ein:
-
X-Neptune-Status— enthält den Antwortcode gefolgt von einem Kurznamen. Im Erfolgsfall wäre der nachgestellte Header beispielsweise:X-Neptune-Status: 200 OK. Im Falle eines Fehlers wäre der Antwortcode ein Neptune-Engine-Fehlercode wie.X-Neptune-Status: 500 TimeLimitExceededException -
X-Neptune-Detail— ist leer für erfolgreiche Anfragen. Im Fehlerfall ist die JSON-Fehlermeldung enthalten. Da in HTTP-Header-Werten nur ASCII-Zeichen zulässig sind, ist die JSON-Zeichenfolge URL-codiert. Die Fehlermeldung wird weiter an die Antwortmeldung angefügt.
Weitere Informationen finden Sie auf der MDN-Seite zu
OpenCypher Beispiel für die Verwendung nachgestellter Header
Dieses Beispiel zeigt, wie nachfolgende Header bei der Diagnose einer Abfrage helfen, die ihr Zeitlimit überschreitet:
curl --raw 'https://your-neptune-endpoint:port/openCypher' \ -H 'TE: trailers' \ -d 'query=MATCH(n) RETURN n.firstName' Output: < HTTP/1.1 200 OK < transfer-encoding: chunked < trailer: X-Neptune-Status, X-Neptune-Detail < content-type: application/json;charset=UTF-8 < < { "results": [{ "n.firstName": "Hossein" }, { "n.firstName": "Jan" }, { "n.firstName": "Miguel" }, { "n.firstName": "Eric" }, {"detailedMessage":"Operation terminated (deadline exceeded)", "code":"TimeLimitExceededException", "requestId":"a7e9d2aa-fbb7-486e-8447-2ef2a8544080", "message":"Operation terminated (deadline exceeded)"} 0 X-Neptune-Status: 500 TimeLimitExceededException X-Neptune-Detail: %7B%22detailedMessage%22%3A%22Operation+terminated+%28deadline+exceeded%29%22%2C%22code%22%3A%22TimeLimitExceededException%22%2C%22requestId%22%3A%22a7e9d2aa-fbb7-486e-8447-2ef2a8544080%22%2C%22message%22%3A%22Operation+terminated+%28deadline+exceeded%29%22%7D
Aufschlüsselung der Antwort:
Das vorherige Beispiel zeigt, wie eine OpenCypher Antwort mit abschließenden Headern bei der Diagnose von Abfragefehlern helfen kann. Hier sehen wir vier aufeinander folgende Teile: (1) erste Header mit einem Status von 200 OK, der angibt, dass das Streaming beginnt, (2) teilweise (defekte) JSON-Ergebnisse, die vor dem Ausfall erfolgreich gestreamt wurden, (3) die angehängte Fehlermeldung, die den Timeout anzeigt, und (4) nachfolgende Header, die den endgültigen Status (500) und detaillierte Fehlerinformationen enthalten. TimeLimitExceededException