В вашем примере сервер действительно получает полный ответ из базового REST API. Ваша функция resolve
- это просто функция, которая вызывается для получения значения определенного поля. Независимо от того, вызываете ли вы axios.get
внутри преобразователя или вне его, не имеет значения - он все равно вернет то же самое.
Однако любой клиент, отправляющий запрос к вашей службе GraphQL, должен будет указать, какой поля (flight_number
, mission_name
, et c.) он хочет вернуть. Когда клиент делает запрос, служба GraphQL вызывает REST API, получает полный ответ и затем преобразует его, чтобы отразить поля, запрошенные клиентом.
Будет ли это более эффективным, чем прямой вызов конечной точки REST, зависит по множеству факторов. При возврате только запрошенных полей полезная нагрузка ответа GraphQL может быть меньше по сравнению с «полным» ответом, возвращаемым конечной точкой REST. Однако GraphQL действительно увеличивает накладные расходы, и наличие любого прокси-сервера между вашим клиентом и REST API также увеличивает задержку, которая может быть компенсирована или не компенсирована выгодами от меньшей полезной нагрузки. Тем не менее, если вы кэшируете ответы от конечной точки REST на своем сервере, вы можете немного ускорить процесс.