Skip to content

Add QUERY verb#411

Draft
martinbonnin wants to merge 1 commit into
legacy-client-editorialfrom
QUERY
Draft

Add QUERY verb#411
martinbonnin wants to merge 1 commit into
legacy-client-editorialfrom
QUERY

Conversation

@martinbonnin

Copy link
Copy Markdown
Contributor

See https://www.rfc-editor.org/rfc/rfc10008.html

QUERY is an idempotent cacheable request with a body that maps quite well to GraphQL queries.

This is based off #404, do not merge before the other PR is merged.

This editorial duplicates a bit of text but since this is a spec and not a novel, I'd rather have duplication than missing information. Maybe the JSON encoding part could be factored in but not sure how.

@Shane32

Shane32 commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

How about a bit more DRY? For example:

QUERY

A QUERY request instructs the GraphQL-over-HTTP server to perform a query operation.

A server MAY accept QUERY requests. If a server accepts QUERY requests, it MUST handle the request and response according to all requirements that apply to POST requests, except as otherwise specified in this section.

QUERY requests MUST NOT be used for executing mutation operations. If the values of {query} and {operationName} indicate that a mutation operation is to be executed, the server MUST respond with error status code 405 (Method Not Allowed) and halt execution. This restriction is necessary to conform with the long-established semantics of safe methods within HTTP.

Then any future changes to the POST requirements are inherited by the QUERY requirements. Or are there more differences?

@martinbonnin

Copy link
Copy Markdown
Contributor Author

Then any future changes to the POST requirements are inherited by the QUERY requirements. Or are there more differences?

There is one difference in the paragraph that POST is required while QUERY is optional:

A server MUST support POST requests encoded with the `application/json` media
type (as indicated by the `Content-Type` header) encoded with UTF-8.

But that's something you call out at the beginning of your version.

I think the "condensed" part is easier to read and maintain but is a bit less clear.

Both work for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants