diff --git a/rfcs/IncrementalDelivery.md b/rfcs/IncrementalDelivery.md index 98ca5391..c5abe475 100644 --- a/rfcs/IncrementalDelivery.md +++ b/rfcs/IncrementalDelivery.md @@ -19,25 +19,20 @@ An example response body will look like: ``` --- Content-Type: application/json; charset=utf-8 -Content-Length: 45 {"data":{"hello":"Hello Rob"},"hasNext":true} - --- Content-Type: application/json; charset=utf-8 -Content-Length: 57 {"data":{"test":"Hello World"},"path":[],"hasNext":false} - ----- ``` * The boundary used is `-` and is passed to the client in the http response's `Content-Type` header. Note that headers can appear in both the HTTP response itself and as part of the response body. The `Content-Type` header must be sent in the HTTP response. -* Each part of the multipart response must start with `---` and a `CRLF` +* An initial boundary is sent marking the end of the preamble area. * Each part of the multipart response must contain a `Content-Type` header. Similar to the GraphQL specification this specification does not require a specific serialization format. For consistency and ease of notation, examples of the response are given in JSON throughout the spec. -* Each part of the multipart response must contain a `Content-Length` header. This should be the number of bytes of the payload of the response. It does not include the size of the headers, boundaries, or `CRLF`s used to separate the content. * After all headers, an additional `CRLF` is sent. -* The payload is sent, followed by two `CRLF`s. -* After the last part of the multipart response is sent, the terminating boundary `-----` is sent, followed by a `CRLF` +* The payload is sent, followed by a `CRLF`. +* After each payload, a boundary is sent. For the final payload, the terminating boundary of `-----` followed by a `CRLF` is sent. For all other payloads a boundary of `---` followed by a `CRFL` is sent. ## Server Implementations * `express-graphql`: [pull request](https://github.com/graphql/express-graphql/pull/583)