簡體   English   中英

如何從 Apollo Server 進行 GraphQL 查詢和變更?

[英]How can one make GraphQL queries and mutations _from_ Apollo Server?

我們有一個大型項目,它將擁有大量不同的數據源/微服務——其中一些將是 REST API,一些是 GraphQL。 我們希望在這些數據源和我們的最終客戶端之間建立一個中間層,這將是 NextJS/React/Apollo 客戶端。 Apollo Server 似乎是一個不錯的選擇——從不同的數據源/微服務接收數據,並制作一個統一的 GraphQL API,Apollo Client 前端將使用它。 同樣,當我們需要從前端發布數據時,提供一個 GraphQL 接口,它將 REST API 或 GraphQL 發布到數據源。

當原始數據源/微服務具有 GraphQL API 時,我遇到的一件事是理解如何Apollo Server 獲取和發布數據。 我查看了Apollo Server 文檔以獲取數據,但沒有看到我在尋找什么——也許我錯過了它。

如果 Apollo Server 不提供 API 來實際獲取 GraphQL 數據,人們會怎么做? 在 Apollo Server 中使用 Apollo Client?

我敢肯定我錯過了令人眼花繚亂的明顯問題,並希望得到任何線索!

聽起來你有點想多了。 您可以在中間層中使用 Apollo Client 來為 Apollo Server 的解析器提供支持。 除此之外,GraphQL 服務器應該以查詢作為正文來響應常規 POST - 您甚至可以為此使用fetch

我認為您正在尋找 GraphQL 網關服務器。

檢查這些鏈接 -

https://www.apollographql.com/docs/apollo-server/federation/implementing/

https://www.apollographql.com/docs/apollo-server/features/schema-delegation/#example

編輯

案例 1 - 如果您有用 Graphql 編寫的微服務,那么使用 apollo 網關服務器,您可以將所有其他微服務的所有架構拼接成一個可由客戶端使用的單一架構。 它易於設置和管理。 即使將來您想將 Graphql 后端縫合到一個模式中,也可以通過最少的更改輕松擴展和管理。

案例 2 - 如果這些微服務是第三方並且您不想將這些模式合並為一個,那么您可以使用 Apollo 服務器(不帶網關)並編寫一個進行外部調用的包裝器解析器。

您可以簡單地使用fetch API從解析器進行網絡調用。 創建 Rest 請求很容易,但在 fetch 的情況下創建復雜的 Graphql 請求(使用片段)可能很困難。

對於休息調用 - 您可以使用 Apollo RestDataScource進行外部休息調用。 它還支持 apollo 服務器緩存。

對於 Graphql 調用 - 您可以使用GraphqlDataSource或像這樣實現自己的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM