В чем разница между мутацией и запросом

На данный момент я читаю [Learn TG40] раздел, где описаны Query и Mutation. Тем не менее, не хватает реальных примеров, которые показывают и/или описывают разницу между ними, а главное - когда это целесообразно использовать.

Большое спасибо за объяснения.

Ответ 1

Технически любой запрос GraphQL может быть реализован, чтобы вызвать запись данных. Но существует соглашение, что любые операции, вызывающие запись, следует отправлять явно с помощью мутации.

Помимо различий в семантике, есть одно важное техническое отличие:

Поля Query могут выполняться параллельно механизмом GraphQL, в то время как поля верхнего уровня Mutation ДОЛЖНЫ выполняться последовательно в соответствии со спецификацией:

Если операция является мутацией, то результатом операции является результат выполнения выбора верхнего уровня мутаций, установленного для типа корневого объекта мутации. Этот набор должен выполняться последовательно.

Ожидается, что поля верхнего уровня в операции мутации оказывают побочные эффекты на базовую систему данных. Последовательное выполнение предоставленных мутаций обеспечивает защиту от расы во время этих побочных эффектов.

Источник: https://graphql.github.io/graphql-spec/draft/#sec-Mutation

Ответ 2

Простыми словами запрос - инструкция SELECT, а мутация - операция INSERT.

Запрос в graphql используется для извлечения данных, в то время как мутация используется для операции INSERT/UPDATE/DELETE.

Ответ 3

query= SELECT

mutation= INSERT, UPDATE, DELETE

Ответ 4

думать в ОТДЫХЕ:

запрос => GET, мутация => POST, PUT, PATCH, DELETE