从您的前端连接到您的 API
本教程剩余章节将指导您构建应用程序的前端,该前端使用Apollo Client来与GraphQL 服务器(这是我们刚刚构建的)进行通信:
Apollo Client是 TypeScript & JavaScript 的一个综合状态管理库。它使您能够使用 GraphQL来管理本地和远程数据。Apollo Client对视图层不可知,因此您可以使用任何您喜欢的视图层,例如:React,React Native,Vue,Ember Angular,Svelte,Solid.js,Web Components 或纯 JavaScript。
本教程使用 React(Apollo Client的核心库开箱即支持),但对于每个视图层,基本概念都是相同的。
设置
npm install
除了安装其他依赖项外,此操作还将安装 @apollo/client
包,其中包含我们将使用的所有 Apollo 客户端 功能。
初始化 ApolloClient
创建我们的ApolloClient
实例,并将其粘贴到start/client
目录下的src/index.tsx
文件中:
import { ApolloClient, gql } from "@apollo/client";import { cache } from "./cache";const client = new ApolloClient({cache,uri: "https://127.0.0.1:4000/graphql",});
构造函数ApolloClient
需要两个参数:
- 我们的GraphQL服务器的
uri
(在本例中为localhost:4000/graphql
)。 - 用作客户端缓存的
InMemoryCache
实例。我们从cache.ts
文件中导入此实例。
就这几行代码,我们的客户端已经准备好抓取数据了!
进行第一次查询
在我们将Apollo Client与React视图层集成之前,让我们尝试使用纯JavaScript发送一个查询
。
- 将以下代码添加到
index.tsx
的底部:
// ...ApolloClient instantiated here...client.query({query: gql`query TestQuery {launch(id: 56) {idmission {name}}}`,}).then((result) => console.log(result));
确保您的GraphQL服务器正在运行。如果您没有完成教程的服务器部分,可以从
final/server
运行以下命令来运行完成的服务器:npm installnpm start从
start/client
,运行npm start
以构建和运行您的客户端应用程序。构建完成后,浏览器将自动打开到https://127.0.0.1:3000/
。当索引页打开时,您暂时看不到任何内容。打开浏览器开发者工具中的控制台。您会看到一个包含您的服务器对您
查询
的响应的记录Object
。您请求的数据包含在该对象的data
字段中,其他字段提供了有关请求状态的元数据。
您还可以在浏览器的开发工具中的网络标签下刷新页面,以查看 Apollo客户端 发送的请求的形状 (它是对 localhost:4000
的POST请求)。
- 接着删除您刚刚添加的
client.query()
调用,以及不必要的gql
导入。
现在,让我们将我们的客户端集成到React中吧!