Действия Apollo/GraphQL, которые не являются ни мутациями, ни запросами

Иногда вам нужно, чтобы ваш API выполнял действие, не связанное с получением данных или манипулированием ими. Например, отправка электронного письма «Забыли пароль» или взаимодействие со сторонним API.

Есть ли у Apollo (или самого GraphQL) рекомендуемый способ сделать это?

Если нет, то какие решения существуют для достижения этой цели, при этом используя преимущества Apollo (такие как проверка схемы/типа)?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
1
0
222
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Различие между запросами и мутациями — в основном академический. В то время как спецификация определяет мутацию как «запись, за которой следует выборка», вы можете думать о запросах как о идемпотентный и без побочных эффектов, в то время как мутации — это что-то, чего нет. В этом смысле запрос на сброс пароля может ничего не изменить в вашей базе данных, но он, безусловно, не свободен от побочных эффектов и, следовательно, должен быть мутацией.

Как правило, все, что можно описать как действие («создать», «обновить», «сбросить», «отправить» и т. д.), вероятно, должно быть мутацией. Это также влияет на использование клиента, поскольку многие клиенты (например, Apollo) ожидают, что мутации будут использоваться иначе, чем запросы на стороне клиента.

Другие вопросы по теме