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代碼風格檢測功能