在上一篇文章《实战:构建一个GraphQL API之项目需求分析》中,我们详细讨论了项目的需求,定义了API的目标和功能。现在,我们进入这一系列教程的重要一步——构建基本的API结构。在本篇中,我们将从零开始搭建GraphQL API的基本框架,并确保我们的代码结构清晰且便于扩展。
技术栈选择
在开始之前,我们首先确认即将使用的技术栈:
- Node.js:作为后端运行时环境。
- Express:作为Web框架。
- Apollo Server:用于构建GraphQL服务器。
- MongoDB:作为数据库(如果需要持久化数据)。
为了后续的教程简便起见,我们以基于Node.js
和Express
的环境为基础,构建一个简单的GraphQL API。
环境搭建
首先,我们需要初始化一个新的Node.js项目。打开终端并执行以下命令:
1 | mkdir graphql-api |
接下来,安装必要的依赖项:
1 | npm install express apollo-server-express graphql mongoose |
express
:轻量级的Web框架。apollo-server-express
:在Express上集成Apollo GraphQL服务器。graphql
:用于定义GraphQL的核心库。mongoose
:MongoDB的对象建模工具。
构建基本API结构
1. 创建项目文件结构
为了使代码结构清晰,我们可以创建如下的文件结构:
1 | graphql-api/ |
2. 定义数据模型
在src/models/
目录中,我们将定义一个简单的模型,例如User
。在src/models/User.js
中添加以下代码:
1 | const mongoose = require('mongoose'); |
这段代码定义了一个表示用户的模型,包含name
和email
字段。
3. 定义GraphQL Schema
在src/schemas/
目录下,我们定义GraphQL的Schema。在src/schemas/userSchema.js
中添加:
1 | const { gql } = require('apollo-server-express'); |
这里,我们定义了一个User
类型以及两种操作:
Query
用于读取数据。Mutation
用于创建新用户。
4. 编写Resolvers
在src/resolvers/
目录中,创建一个文件userResolvers.js
并添加如下代码:
1 | const User = require('../models/User'); |
在这里,我们创建了对应Query
和Mutation
的resolver,通过Mongoose与MongoDB进行交互。
5. 将所有部分整合在一起
在src/index.js
中整合API的所有部分:
1 | const express = require('express'); |
在这个文件中,我们:
- 连接到MongoDB。
- 创建并启动Apollo Server。
- 将GraphQL API绑定到Express应用上。
测试基本API
至此,我们已成功构建了一个基础的GraphQL API架构。可以通过运行以下命令启动服务器:
1 | node src/index.js |
访问 http://localhost:4000/graphql
,可以使用Apollo Studio进行API的测试。
在GraphQL Playground中,可以尝试以下查询以获取用户列表:
1 | query { |
和以下mutation来创建一个新用户:
1 | mutation { |
小结
在本篇文章中,我们成功地构建了一个基本的GraphQL API结构。我们定义了数据模型、GraphQL schema和resolver,并将它们无缝集成到一个Express应用中。随着项目的不断发展,我们可以根据需求进一步扩展和优化我们的API。
在下一篇文章《实战:构建一个GraphQL API之部署与测试》中,我们将讨论如何将这个API部署到云端、进行测试以及监控其性能等内容,请继续关注!