当前位置: 首页 > 工具软件 > koa-graphql > 使用案例 >

Koa+Mysql2+GraphQL脚手架 koa-shelf

戚兴邦
2023-12-01

简介

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

优点:

  1. 请求你所要的数据不多不少
  2. 获取多个资源只用一个请求
  3. 描述所有的可能类型系统
  4. 强大的开发者工具
  5. API 演进无需划分版本

本篇文章中将搭配Koa实现一个GraphQL的脚手架,配合Mysql2实现一个简单的脚手架

项目结构如下所示

.
├─app
│  ├─dao // 使用数据库
│  │  └─common // 数据库查询插入公共组件
│  ├─resolver // graphql的回调函数
│  ├─routes // 书写普通接口
│  ├─schema // graphql的配置文件
│  └─utils // 配置公共模块
└─config // 配置文件
复制代码

如何使用

  1. git clone git@github.com:RenaultZC/koa-shelf.git
  2. npm install
  3. 复制config/db-template.js到config/db.js,然后配置数据库相关信息,创建test表,字段text为String类型
  4. npm run dev
  5. 到localhost:5000/graphql界面访问,查询示例:
query{
  getText{
    text
  }
}
复制代码

详细介绍项目目录

dao文件夹

该文件下写的是数据库操作,对于mysql数据库的增删改查操作,通过调用common公共组件中的makePromiseForQuery和makePromiseForExecute进行查询或增删改

resolver文件夹

该文件下写的是对于GraphQL解析器的书写,会通过graphql.js 将该文件下的所有文件进行整合输出

schema文件夹

该文件下写的是对于GraphQL服务中的变量及类型的书写,会通过graphql.js 将该文件下的所有文件进行整合输出,与resolver函数一同生成GraphQL查询接口

routes文件夹

该文件下会书写普通接口,通过index.js的暴露出去来引用

db.js文件

为数据库的基础配置,创建数据库连接池,减少数据库重连的消耗

graphql.js文件

整合resolver文件夹和schema文件夹生成GraphQL接口

logger.js文件

负责后台开启后的日常日志打印,方便后台崩溃查错

调用方式

import { getLogger } from '../logger'

const logger = getLogger()


logger.error(`Reason: test error, Date:${new Date().toLocaleString()}, error:${e}`)
复制代码

config文件夹

数据库基础配置文件db.js

日志基础配置文件log4.json

脚手架实现操作

实现普通GraphQL示例

实现Router接口示例

实现数据库操作示例

代码使用ES6风格

实现日志文件记录功能

加入ESlint代码风格检测功能

代码地址

github

 类似资料: