[Incremental Delivery Questions] How is the response protocol determined in different scenarios
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Documentation
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- graphql
- Domain
- api, documentation
Research direction
Start with the current spec draft sections covering HTTP Accept negotiation, incremental delivery, response formats, and GET requests. Review each scenario against the draft's stated requirements and document a single, consistent resolution for content-type selection, unsupported clients, execution behavior, and GET support.
Written by the indexing model from the issue text.
Description
I have a question regarding how the response protocol is determined for a request that could POTENTIALLY result in multiple payloads.
Scenario: client sends header accept: multipart/mixed with non-"Incremental Delivery" operation
Given we have an operation that does not use defer/stream at all:
query { foo }
Should the response then use the application/(graphql+)json response type or the multipart/mixed response type?
Scenario: clients sends accept: multipart/mixed, application/(graphql+)json with non-"Incremental Delivery" operation
Given we have an operation that does not use defer/stream at all:
query { foo }
Should the response then still use the application/(graphql+)json content-type or the multipart/mixed response type?
According to the current spec draft, the server should always please the order of the accept header listed content-types if possible. Would that still apply if the server is capable of serving both content-types (accept: multipart/mixed and application/(graphql+)json)
Scenario: clients sends header accept: application/(graphql+)json with "Incremental Delivery" operation
query {
foo
... on Query @defer {
bar
}
}
Quote from current Spec Draft:
According to the HTTP 1.1 Accept specification, when a client does not include at least one supported content type in the Accept HTTP header, the server MAY choose to respond in one of several ways. The server MUST either:
Disregard the Accept header and respond with the default content type of application/graphql+json, specifying this in the Content-Type header; OR
Respond with a 406 Not Acceptable status code
Should the server in this scenario still send back multipart/mixed or raise a 406 HTTP error?
Should the fact that the client sent an operation with a defer or stream directive be a hint to the server that the client MUST be able to parse it? A client not supporting it, would probably not have requested it in the first place?
Should the server be responsible for merging the results and sending them as a single result to the client?
Should the server do the execution with the defer and stream executor functionality being disabled?
Scenario: clients sends the HTTP GET method
Is incremental delivery via GET allowed or intended?
- Dominant language
- JavaScript
- Stars
- 428
- Forks
- 70
- Avg merge
- 11m
- Merged PRs (30d)
- 4
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from graphql/graphql-over-http
-
Difficulty 3/5 Half a day Newbie friendliness 25/100
graphql/graphql-over-http#446 · 3 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
graphql/graphql-over-http#415 ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
graphql/graphql-over-http#392 · 4 reactions ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
graphql/graphql-over-http#242 · 8 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
graphql/graphql-over-http#216 · 15 comments · 1 reaction ·
All issues in graphql/graphql-over-http
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
feature request
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
openlayers/openlayers#17736 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
521xueweihan/HelloGitHub#4326 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
Mintplex-Labs/anything-llm#7133 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
Maintainers usually reply within 1 day