26 构建一个GraphQL API之部署与测试
在上一篇中,我们已经完成了构建基本的 GraphQL API 结构。现在,我们将进入这一系列教程的另一个重要部分:部署和测试我们的 GraphQL API。通过本文,你将学习到如何将你的 API 部署到云服务,并运用测试工具确保其稳定性和可用性。
部署 GraphQL API
选择部署平台
在部署 GraphQL API 之前,首先需要选择一个合适的云服务平台。常见的选择包括:
- Heroku
- AWS(Amazon Web Services)
- GCP(Google Cloud Platform)
- DigitalOcean
本教程将以 Heroku 为例,演示如何快速部署你的 GraphQL API。
在 Heroku 上部署
-
安装 Heroku CLI
如果你还没有安装 Heroku CLI,可以从 Heroku 官方网站 下载并安装。
-
登录 Heroku
打开终端并输入以下命令进行登录:
heroku login
-
创建 Heroku 应用
在你的项目根目录中,使用以下命令创建一个新的 Heroku 应用:
heroku create your-app-name
-
配置环境变量
如果你的 API 依赖于环境变量(例如数据库连接字符串),可以使用以下命令设置这些变量:
heroku config:set DATABASE_URL=your_database_url
-
构建并部署
确保你的项目包含一个
Procfile
,该文件定义了应用程序的入口点。例如,对于 Node.js 应用,可以这样设置:web: node index.js
然后,使用以下命令将代码推送到 Heroku:
git add . git commit -m "Deploying GraphQL API" git push heroku master
-
开启应用
部署完成后,可以使用以下命令启动你的应用:
heroku open
现在,你的 GraphQL API 已经成功部署并可以通过 Heroku 提供的 URL 访问。
测试 GraphQL API
在确保 API 成功部署之后,接下来的步骤是进行全面的测试。测试可以帮助我们发现潜在的bug,并确保 API 的稳定性和性能。
使用 Postman 进行手动测试
-
安装 Postman
如果还没有安装,可以从 Postman 官网 下载并安装。
-
创建新的请求
打开 Postman,选择
POST
方法并输入你的 GraphQL API URL,例如:https://your-app-name.herokuapp.com/graphql
-
设置请求头
在请求头中添加
Content-Type
:Key: Content-Type Value: application/json
-
构造请求体
在请求体中输入你的 GraphQL 查询,例如:
{ "query": "{ users { id name } }" }
-
发送请求并观察响应
点击 "Send" 按钮发送请求并检查返回的数据,以确保 API 正常工作。
使用 Jest 进行自动化测试
为了实现更高效的测试,建议编写自动化测试用例。我们将使用 Jest
来实现这一点。
-
安装 Jest
在你的项目中安装 Jest:
npm install --save-dev jest
-
编写测试代码
创建一个名为
test.js
的测试文件,输入如下内容:const request = require('supertest'); const app = require('./index'); // 引入你的应用 describe('GraphQL API', () => { it('should fetch users', async () => { const res = await request(app) .post('/graphql') .send({ query: '{ users { id name } }', }); expect(res.statusCode).toEqual(200); expect(res.body.data.users).toBeDefined(); }); });
-
运行测试
在终端中运行以下命令来执行测试:
npx jest
测试通过后,你将看到相应的提示,这表明你的 GraphQL API 在正常工作。
小结
在本篇教程中,我们完成了 GraphQL API 的部署和测试。通过在 Heroku 上部署我们的 API,并使用 Postman 及 Jest 进行手动和自动化测试,我们确保了 API 的可用性和稳定性。下一篇将继续探索 GraphQL API 的性能优化与最佳实践。希望你跟着这个系列持续加油,提升你的 GraphQL API 开发技能!