GraphQL 既是一种用于 API 的查询语言也是一个知足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端可以准确地得到它须要的数据,并且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。mysql
优势:git
本篇文章中将搭配Koa实现一个GraphQL的脚手架,配合Mysql2实现一个简单的脚手架github
.
├─app
│ ├─dao // 使用数据库
│ │ └─common // 数据库查询插入公共组件
│ ├─resolver // graphql的回调函数
│ ├─routes // 书写普通接口
│ ├─schema // graphql的配置文件
│ └─utils // 配置公共模块
└─config // 配置文件
复制代码
git@github.com:RenaultZC/koa-shelf.git
query{
getText{
text
}
}
复制代码
该文件下写的是数据库操做,对于mysql数据库的增删改查操做,经过调用common公共组件中的makePromiseForQuery和makePromiseForExecute进行查询或增删改sql
该文件下写的是对于GraphQL解析器的书写,会经过graphql.js 将该文件下的全部文件进行整合输出数据库
该文件下写的是对于GraphQL服务中的变量及类型的书写,会经过graphql.js 将该文件下的全部文件进行整合输出,与resolver函数一同生成GraphQL查询接口npm
该文件下会书写普通接口,经过index.js的暴露出去来引用json
为数据库的基础配置,建立数据库链接池,减小数据库重连的消耗app
整合resolver文件夹和schema文件夹生成GraphQL接口koa
负责后台开启后的平常日志打印,方便后台崩溃查错函数
调用方式
import { getLogger } from '../logger'
const logger = getLogger()
logger.error(`Reason: test error, Date:${new Date().toLocaleString()}, error:${e}`)
复制代码
数据库基础配置文件db.js
日志基础配置文件log4.json
实现普通GraphQL示例
实现Router接口示例
实现数据库操做示例
代码使用ES6风格
实现日志文件记录功能
加入ESlint代码风格检测功能