選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

Amazon Neptune OpenCypher HTTPS 端點

焦點模式
Amazon Neptune OpenCypher HTTPS 端點 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

HTTPS 端點上的 OpenCypher 讀取和寫入查詢

OpenCypher HTTPS 端點支援使用 和 POST方法讀取GET和更新查詢。不支援 DELETEPUT 方法。

下列指示會逐步引導您使用 curl命令和 HTTPS 連線至 OpenCypher 端點。您必須從與您的 Neptune 資料庫執行個體位於同一虛擬私有雲端 (VPC) 的 Amazon EC2 執行個體依照以下指示進行。

語法是:

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

以下是範例讀取查詢,一個使用 POST,一個使用 GET

1. 使用 POST

curl HTTPS://server:port/openCypher \ -d "query=MATCH (n1) RETURN n1;"

2. 使用 GET (查詢字串是 URL 編碼的):

curl -X GET \ "HTTPS://server:port/openCypher?query=MATCH%20(n1)%20RETURN%20n1"

以下是範例寫入/更新查詢,一個使用 POST,一個使用 GET

1. 使用 POST

curl HTTPS://server:port/openCypher \ -d "query=CREATE (n:Person { age: 25 })"

2. 使用 GET (查詢字串是 URL 編碼的):

curl -X GET \ "HTTPS://server:port/openCypher?query=CREATE%20(n%3APerson%20%7B%20age%3A%2025%20%7D)"

預設 OpenCypher JSON 結果格式

預設會傳回下列 JSON 格式,或將請求標頭明確設定為 Accept: application/json 來傳回此格式。這種格式旨在使用大多數程式庫的原生語言功能輕鬆地剖析為物件。

傳回的 JSON 文件包含一個欄位 results,其中包含查詢傳回值。下面範例顯示常見值的 JSON 格式。

值回應範例:

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

節點回應範例:

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

關係回應範例:

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

路徑回應範例:

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

分段 OpenCypher 回應的選用 HTTP 結尾標頭

從 Neptune 引擎 1.4.5.0 版開始,即可使用此功能。

對 OpenCypher 查詢和更新的 HTTP 回應通常會以多個區塊傳回。當傳送初始回應區塊之後發生失敗 (HTTP 狀態碼為 200),診斷問題可能很困難。根據預設,`Neptune 會透過將錯誤訊息附加到訊息內文來報告此類失敗,這可能因為回應的串流性質而損毀。

使用結尾標頭

為了改善錯誤偵測和診斷,您可以在請求中包含傳輸編碼 (TE) 尾端標頭 (te: 尾端),以啟用尾端標頭。這樣做會導致 Neptune 在回應區塊的結尾標頭內包括兩個新的標頭欄位:

  • X-Neptune-Status – 包含回應代碼,後面接著簡短名稱。例如,若成功,結尾標頭將是:X-Neptune-Status: 200 OK。如果失敗,回應代碼會是 Neptune 引擎錯誤代碼,例如 X-Neptune-Status: 500 TimeLimitExceededException

  • X-Neptune-Detail – 為空,表示請求成功。若發生錯誤,它會包含 JSON 錯誤訊息。由於 HTTP 標頭值中只允許 ASCII 字元,因此 JSON 字串會進行 URL 編碼。錯誤訊息仍會附加至回應訊息本文。

如需詳細資訊,請參閱有關 TE 請求標頭的 MDN 頁面

OpenCypher 結尾標頭使用範例

此範例示範結尾標頭如何協助診斷超過其時間限制的查詢:

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
回應明細:

上一個範例顯示具有結尾標頭的 OpenCypher 回應如何協助診斷查詢失敗。在這裡,我們看到四個循序部分:(1) 狀態為 200 OK 的初始標頭表示串流開始、(2) 失敗前已成功串流部分 (中斷) JSON 結果、(3) 顯示逾時的附加錯誤訊息,以及 (4) 包含最終狀態 (500 TimeLimitExceededException) 和詳細錯誤資訊的結尾標頭。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。