Мутация Apollo GraphQL, эквивалентная PUT - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь эффективно выполнить запрос 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,
  }
}

Хотя это, кажется, стирает всереквизита на сущности кошки (это не удаляет ресурс).Это правильный синтаксис для PUT-подобного запроса?

1 Ответ

0 голосов
/ 26 октября 2018

Прежде всего, я думаю, стоит отметить, что graphql не зависит от протокола.Это означает, что может использоваться любой транспортный протокол, не обязательно HTTP (несмотря на то, что в большинстве случаев используется HTTP).

Кроме того, что вы подразумеваете под запросом, подобным PUT?Как я понимаю, вы заявляете, что метод HTTP PUT используется для исправления данных.Что не может быть правдой.Это зависит от того, как вы это реализуете.Вы можете легко создать REST API, который принимает данные через GET и отправляет их методом POST или PUT, несмотря на то, что это не рекомендуется лучшими практиками.

Та же ситуация здесь с вашей проблемой.Речь идет не о вашей сигнатуре мутаций, а о реализации решателя мутаций.

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

Как проверить, является ли это новым ресурсом?Id prop в этом случае не будет определен, верно?

Если вы работаете с сторонним API, проверьте его документы.

...