View a markdown version of this page

Titik akhir HTTPS Amazon OpenCypher Neptunus - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Titik akhir HTTPS Amazon OpenCypher Neptunus

catatan

Neptunus saat ini tidak mendukung HTTP/2 untuk permintaan REST API. Klien harus menggunakan HTTP/1.1 saat menghubungkan ke titik akhir.

OpenCypher membaca dan menulis kueri pada titik akhir HTTPS

Titik akhir OpenCypher HTTPS mendukung kueri baca dan pembaruan menggunakan metode GET dan metode. POST PUTMetode DELETE dan tidak didukung.

Instruksi berikut memandu Anda melalui koneksi ke OpenCypher titik akhir menggunakan curl perintah dan HTTPS. Anda harus mengikuti petunjuk ini dari instans Amazon EC2 di virtual private cloud (VPC) yang sama seperti instans DB Neptune Anda.

Sintaksnya adalah:

HTTPS://(the server):(the port number)/openCypher

Berikut adalah contoh kueri baca:

AWS CLI
aws neptunedata execute-open-cypher-query \ --endpoint-url https://your-neptune-endpoint:port \ --open-cypher-query "MATCH (n1) RETURN n1"

Untuk informasi selengkapnya, lihat execute-open-cypher-querydi Referensi AWS CLI Perintah.

SDK
import boto3 from botocore.config import Config client = boto3.client( 'neptunedata', endpoint_url='https://your-neptune-endpoint:port', config=Config(read_timeout=None, retries={'total_max_attempts': 1}) ) response = client.execute_open_cypher_query( openCypherQuery='MATCH (n1) RETURN n1' ) print(response['results'])

Untuk contoh AWS SDK dalam bahasa lain, lihatAWS SDK.

awscurl
awscurl https://your-neptune-endpoint:port/openCypher \ --region us-east-1 \ --service neptune-db \ -X POST \ -d "query=MATCH (n1) RETURN n1"
catatan

Contoh ini mengasumsikan bahwa AWS kredensil Anda dikonfigurasi di lingkungan Anda. Ganti us-east-1 dengan Wilayah cluster Neptunus Anda.

curl
curl https://your-neptune-endpoint:port/openCypher \ -d "query=MATCH (n1) RETURN n1"

Berikut adalah contoh write/update kueri:

AWS CLI
aws neptunedata execute-open-cypher-query \ --endpoint-url https://your-neptune-endpoint:port \ --open-cypher-query "CREATE (n:Person { age: 25 })"

Untuk informasi selengkapnya, lihat execute-open-cypher-querydi Referensi AWS CLI Perintah.

SDK
import boto3 from botocore.config import Config client = boto3.client( 'neptunedata', endpoint_url='https://your-neptune-endpoint:port', config=Config(read_timeout=None, retries={'total_max_attempts': 1}) ) response = client.execute_open_cypher_query( openCypherQuery='CREATE (n:Person { age: 25 })' ) print(response['results'])

Untuk contoh AWS SDK dalam bahasa lain, lihatAWS SDK.

awscurl
awscurl https://your-neptune-endpoint:port/openCypher \ --region us-east-1 \ --service neptune-db \ -X POST \ -d "query=CREATE (n:Person { age: 25 })"
catatan

Contoh ini mengasumsikan bahwa AWS kredensil Anda dikonfigurasi di lingkungan Anda. Ganti us-east-1 dengan Wilayah cluster Neptunus Anda.

curl
curl https://your-neptune-endpoint:port/openCypher \ -d "query=CREATE (n:Person { age: 25 })"

Format hasil OpenCypher JSON default

Format JSON berikut dikembalikan secara default, atau dengan mengatur header permintaan secara eksplisit ke. Accept: application/json Format ini dirancang agar mudah diurai menjadi objek menggunakan fitur bahasa asli dari sebagian besar perpustakaan.

Dokumen JSON yang dikembalikan berisi satu bidangresults, yang berisi nilai pengembalian kueri. Contoh di bawah ini menunjukkan format JSON untuk nilai-nilai umum.

Contoh respons nilai:

{ "results": [ { "count(a)": 121 } ] }

Contoh respons simpul:

{ "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 } } } ] }

Contoh respons hubungan:

{ "results": [ { "r": { "~id": "7389", "~entityType": "relationship", "~start": "22", "~end": "151", "~type": "route", "~properties": { "dist": 956 } } } ] }

Contoh respons jalur:

{ "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 } } ] } ] }

Header tambahan HTTP opsional untuk respons multi-bagian OpenCypher

Fitur ini tersedia dimulai dengan rilis mesin Neptunus 1.4.5.0.

Respons HTTP terhadap OpenCypher kueri dan pembaruan biasanya dikembalikan dalam beberapa potongan. Ketika kegagalan terjadi setelah potongan respons awal dikirim (dengan kode status HTTP 200), mungkin sulit untuk mendiagnosis masalah. Secara default, `Neptunus melaporkan kegagalan tersebut dengan menambahkan pesan kesalahan ke badan pesan, yang mungkin rusak karena sifat streaming dari respons.

Menggunakan header trailing

Untuk meningkatkan deteksi dan diagnosis kesalahan, Anda dapat mengaktifkan header trailing dengan menyertakan header trailer transfer-encoding (TE) (te: trailer) dalam permintaan Anda. Melakukan hal ini akan menyebabkan Neptune menyertakan dua bidang header baru dalam header trailing dari potongan respons:

  • X-Neptune-Status— berisi kode respons diikuti dengan nama pendek. Misalnya, dalam kasus keberhasilan, header trailing akan berupa: X-Neptune-Status: 200 OK. Dalam kasus kegagalan, kode respons akan menjadi kode kesalahan mesin Neptunus seperti. X-Neptune-Status: 500 TimeLimitExceededException

  • X-Neptune-Detail— kosong untuk permintaan yang berhasil. Dalam kasus kesalahan, ia berisi pesan kesalahan JSON. Karena hanya karakter ASCII yang diperbolehkan dalam nilai header HTTP, string JSON di-enkode dengan URL. Pesan kesalahan juga masih ditambahkan ke badan pesan respons.

Untuk informasi selengkapnya, lihat halaman MDN tentang header permintaan TE.

OpenCypher contoh penggunaan header trailing

Contoh ini menunjukkan bagaimana header trailing membantu mendiagnosis kueri yang melebihi batas waktunya:

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
Rincian respons:

Contoh sebelumnya menunjukkan bagaimana OpenCypher respons dengan header tambahan dapat membantu mendiagnosis kegagalan kueri. Di sini kita melihat empat bagian berurutan: (1) header awal dengan status 200 OK yang menunjukkan streaming dimulai, (2) hasil JSON sebagian (rusak) berhasil dialirkan sebelum kegagalan, (3) pesan kesalahan yang ditambahkan yang menunjukkan batas waktu, dan (4) header trailing yang berisi status akhir (500) dan informasi kesalahan terperinci. TimeLimitExceededException