Результат запроса GraphQL для несуществующего объекта - PullRequest
1 голос
/ 12 апреля 2020

У меня есть запрос GraphQL, который вызывает REST-сервис для получения возвращаемого объекта. Запрос содержит параметр Id, который затем передается службе. Однако служба REST может ответить с состоянием http 404 Not Found, если объект с таким Id не существует. Это похоже на правильный ответ.

Как вы моделируете ответ Not Found в GraphQL? Есть ли способ сообщить вызывающему GQL, что что-то не существует?

Обновление
Некоторые варианты, которые я рассматриваю:

  • Возврат null
  • Измените запрос GrqlhQL, чтобы он возвращал список объектов и возвращал пустой список, в котором ничего не найдено
  • Возвращает какой-либо объект ошибки с кодом ошибки

, но это неясно, есть ли рекомендуемая практика в разработке GQL API.

1 Ответ

1 голос
/ 12 апреля 2020

Вы можете рассматривать это как ошибку и обрабатывать ее соответствующим образом.

Я рекомендую вам проверить GraphQL spe c, параграф об обработке ошибок.
Надеюсь, он содержит именно то, что вы ищете.
По сути, вы должен вернуть все, что мог, и сообщить клиенту о потенциальных проблемах в поле «ошибки».

Пример из документации:
Запрос:

{
  hero(episode: $episode) {
    name
    heroFriends: friends {
      id
      name
    }
  }
}

Ответ:

{
  "errors": [
    {
      "message": "Name for character with ID 1002 could not be fetched.",
      "locations": [ { "line": 6, "column": 7 } ],
      "path": [ "hero", "heroFriends", 1, "name" ]
    }
  ],
  "data": {
    "hero": {
      "name": "R2-D2",
      "heroFriends": [
        {
          "id": "1000",
          "name": "Luke Skywalker"
        },
        {
          "id": "1002",
          "name": null
        },
        {
          "id": "1003",
          "name": "Leia Organa"
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...