Я пытаюсь эффективно выполнить запрос PUT с помощью GraphQL
Мутация:
export const UPDATE_CAT = gql`
mutation updateCat($catRef: RefInput, $payload: CatInput) {
updateCat(ref: $catRef, input: $payload) {
${ref}
}
}
`;
Переменные запроса:
{
"catRef": {
"id": "7b342789-e527-42a6-997b-cfe2fb6bdb07",
"typename": "cat.beacon.Beacon"
},
"payload":{
"position": null,
}
}
Хотя это, кажется, стирает все реквизиты на сущности cat (это не удаляет ресурс). Это правильный синтаксис для запроса типа PUT?


Прежде всего, я думаю, стоит отметить, что graphql не зависит от протокола. Это означает, что можно использовать любой транспортный протокол, не обязательно HTTP (несмотря на то, что HTTP используется в большинстве случаев).
Кроме того, что вы подразумеваете под запросом PUT like? Насколько я понимаю, вы заявляете, что метод HTTP PUT используется для исправления данных. Что может быть неправдой. Это зависит от того, как вы это реализуете. Вы можете легко создать REST API, который принимает данные с помощью GET и отправляет их с помощью метода POST или PUT, несмотря на то, что это не рекомендуется лучшими практиками.
Такая же ситуация и здесь с вашей проблемой. Дело не в сигнатуре вашей мутации, а в реализации преобразователя мутаций.
Чтобы это работало, вы должны определить в своей функции распознавателя на сервере, является ли это новым или существующим ресурсом, и правильно обработать оба сценария.
Как проверить, новый ли это ресурс? Id prop в этом случае будет не определен, верно?
Если вы работаете со сторонним API, проверьте его документацию.