

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

# Titik akhir OpenCypher HTTPS Amazon Neptunus
<a name="access-graph-opencypher-queries"></a>

**Topics**
+ [OpenCypher baca dan tulis kueri pada titik akhir HTTPS](#access-graph-opencypher-queries-read-write)
+ [Format hasil OpenCypher JSON default](#access-graph-opencypher-queries-results-simple-JSON)
+ [Header trailing HTTP opsional untuk respons multi-bagian OpenCypher](#optional-http-trailing-headers)

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

## OpenCypher baca dan tulis kueri pada titik akhir HTTPS
<a name="access-graph-opencypher-queries-read-write"></a>

T OpenCypher itik akhir HTTPS mendukung kueri baca dan pembaruan menggunakan kedua metode `GET` dan `POST` metode. `PUT`Metode `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- ](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/execute-open-cypher-query.html) query di Referensi Perintah. AWS CLI 

------
#### [ 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, lihat[AWS SDK](access-graph-opencypher-sdk.md).

------
#### [ 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 kredenSIAL 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- ](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/execute-open-cypher-query.html) query di Referensi Perintah. AWS CLI 

------
#### [ 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, lihat[AWS SDK](access-graph-opencypher-sdk.md).

------
#### [ 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 kredenSIAL 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
<a name="access-graph-opencypher-queries-results-simple-JSON"></a>

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 pustaka.

Dokumen JSON yang dikembalikan berisi satu bidang,`results`, yang berisi nilai pengembalian kueri. Contoh di bawah ini menunjukkan pemformatan 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 trailing HTTP opsional untuk respons multi-bagian OpenCypher
<a name="optional-http-trailing-headers"></a>

 Fitur ini tersedia mulai dengan rilis mesin Neptune [ 1.4.5.0](https://docs.aws.amazon.com/releases/release-1.4.5.0.xml). 

 Respons HTTP terhadap OpenCypher kueri dan pembaruan biasanya dikembalikan dalam beberapa bagian. Ketika kegagalan terjadi setelah potongan respons awal telah 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 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 ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/TE) 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 trailing 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 ditambahkan menunjukkan batas waktu, dan (4) header trailing berisi status akhir (500 TimeLimitExceededException) dan informasi kesalahan terperinci. 