Skip to content

Add QUERY verb#411

Open
martinbonnin wants to merge 1 commit into
mainfrom
QUERY
Open

Add QUERY verb#411
martinbonnin wants to merge 1 commit into
mainfrom
QUERY

Conversation

@martinbonnin

@martinbonnin martinbonnin commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

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

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.

Base automatically changed from legacy-client-editorial to main July 13, 2026 19:05
@martinbonnin
martinbonnin marked this pull request as ready for review July 23, 2026 15:29
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