Koa+Mysql2+GraphQL腳手架 koa-shelf

簡介

GraphQL 既是一種用於 API 的查詢語言也是一個知足你數據查詢的運行時。 GraphQL 對你的 API 中的數據提供了一套易於理解的完整描述,使得客戶端可以準確地得到它須要的數據,並且沒有任何冗餘,也讓 API 更容易地隨着時間推移而演進,還能用於構建強大的開發者工具。mysql

優勢:git

  1. 請求你所要的數據很少很多
  2. 獲取多個資源只用一個請求
  3. 描述全部的可能類型系統
  4. 強大的開發者工具
  5. API 演進無需劃分版本

本篇文章中將搭配Koa實現一個GraphQL的腳手架,配合Mysql2實現一個簡單的腳手架github

項目結構以下所示

.
├─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進行查詢或增刪改sql

resolver文件夾

該文件下寫的是對於GraphQL解析器的書寫,會經過graphql.js 將該文件下的全部文件進行整合輸出數據庫

schema文件夾

該文件下寫的是對於GraphQL服務中的變量及類型的書寫,會經過graphql.js 將該文件下的全部文件進行整合輸出,與resolver函數一同生成GraphQL查詢接口npm

routes文件夾

該文件下會書寫普通接口,經過index.js的暴露出去來引用json

db.js文件

爲數據庫的基礎配置,建立數據庫鏈接池,減小數據庫重連的消耗app

graphql.js文件

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

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

相關文章
相關標籤/搜索