

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Neptune Streams API 响应格式
<a name="streams-using-api-reponse"></a>

Neptune Streams REST API 请求的响应包含以下字段：
+ `lastEventId` – 流响应中最后一次更改的序列标识符。事件 ID 由两个字段组成：`commitNum` 标识更改图形的事务，`opNum` 标识该事务中的特定操作。如以下示例所示。

  ```
    "eventId": {
      "commitNum": 12,
      "opNum": 1
    }
  ```
+ `lastTrxTimestamp` – 请求提交事务的时间（使用 Unix 纪元时间表示，单位为毫秒）。
+ `format` – 返回的更改记录的序列化格式。对于 Gremlin 或 openCypher 更改记录，可能的值为 `PG_JSON`；对于 SPARQL 更改记录，可能的值为 `NQUADS`。
+ `records` – 包含在响应中的序列化更改日志流记录的数组。`records` 数组中的每条记录都包含以下字段：
  + `commitTimestamp` – 请求提交事务的时间（使用 Unix 纪元时间表示，单位为毫秒）。
  + `eventId` – 流更改记录的序列标识符。
  + `data`— 序列化的 Gremlin、SPARQL 或变更记录。 OpenCypher 下一部分[Neptune Streams 中的序列化格式](streams-change-formats.md)中更详细地介绍了每个记录的序列化格式。
  + `op` – 造成更改的操作。
  + `isLastOp` – 仅当此操作是其事务中的最后一个操作时才存在。如果存在，则它设置为 `true`。有助于确保整个事务都被消耗掉。
+ `totalRecords` – 响应中的记录总数。

例如，对于包含多个操作的事务，以下响应返回 Gremlin 更改数据：

```
{
  "lastEventId": {
    "commitNum": 12,
    "opNum": 1
  },
  "lastTrxTimestamp": 1560011610678,
  "format": "PG_JSON",
  "records": [
    {
      "commitTimestamp": 1560011610678,
      "eventId": {
        "commitNum": 1,
        "opNum": 1
      },
      "data": {
        "id": "d2b59bf8-0d0f-218b-f68b-2aa7b0b1904a",
        "type": "vl",
        "key": "label",
        "value": {
          "value": "vertex",
          "dataType": "String"
        }
      },
      "op": "ADD"
    }
  ],
  "totalRecords": 1
}
```

以下响应返回事务中最后一个操作的 SPARQL 更改数据（该操作在事务编号 97 中由 `EventId(97, 1)` 标识）。

```
{
  "lastEventId": {
    "commitNum": 97,
    "opNum": 1
  },
  "lastTrxTimestamp": 1561489355102,
  "format": "NQUADS",
  "records": [
    {
      "commitTimestamp": 1561489355102,
      "eventId": {
        "commitNum": 97,
        "opNum": 1
      },
      "data": {
        "stmt": "<https://test.com/s> <https://test.com/p> <https://test.com/o> .\n"
      },
      "op": "ADD",
      "isLastOp": true
    }
  ],
  "totalRecords": 1
}
```