graphql-yoga 项目简单使用&&集成docker

graphql-yoga 是一个实现了grahql的框架,使用简单,便捷
具体源码参考github https://github.com/rongfengliang/graphql-yoga-dockerdemo

安装框架

  • yarn
yarn init -y 
yarn add graphql-yoga

项目结构

项目包好了docker jenkins docker-compose && 基本graphql-yoga demo

├── Jenkinsfile
├── README.md
├── app.js
├── docker-compose.yml
├── dockerfile
├── images
│ ├── 1.png
│ └── 2.png
├── package.json
├── schema.graphql
└── yarn.lock

代码说明

  • Jenkinsfile

    jenkins pipeline 集成,比较简单

pipeline {
agent {
node {
label 'jt68'
}
}
stages {
stage('image build') {
steps {
sh 'docker-compose build'
}
}
stage('docker-compose run') {
steps {
sh 'docker-compose stop && docker-compose up -d '
}
}
}
}
  • app.js

    query && mutation 的实现

const { GraphQLServer } = require('graphql-yoga')
const typeDefs = `schema.graphql`
const resolvers = {
Query: {
hello: function(_,name){
return {
name:`${name.name}`,
age:33
}
},
localtype:function(parent,ob){
return {
name:`${ob.name}`,
age: ob.name.length
}
},
listOfStrings:function(parent){
return [
"dalong",
"demoapp",
"rong"
]
}
},
Mutation:{
addUser:function(parent,ob){
console.log(ob)
return JSON.stringify(ob)
}
}
}
const server = new GraphQLServer({ typeDefs, resolvers })
server.start(() => console.log('Server is running on localhost:4000'))
  • docker-compose.yml

    docker-compose 集成

version: "3"
services:
api:
image: graphql-api
build: .
ports:
- "4000:4000"
  • dockerfile

    docker 集成代码,实际可以修改不通的基础镜像,这个因为当时测试网路的问题,直接copy node module

FROM dalongrong/node-yarn:9
WORKDIR /app
COPY . /app
RUN yarn config set registry https://registry.npm.taobao.org
ENTRYPOINT [ "yarn","start" ]
  • schema.graphql

    graphql schema && query && mutation 定义

type LocalUser {
name: String
age: Int
}
interface Applogin {
name:String
account:String
}
type MobileApplogin implements Applogin{
type:Int
name:String
account:String
}

# input 对象
input MyUser {
name:String
age:Int
}
# 查询定义
type Query {
hello(name: String): User!
localtype(name:String):LocalUser!
listOfStrings: [String]!
}
# 数据添加定义
type Mutation{
addUser(input:MyUser):String
}
# 数据类型定义,参考下面的query 截图
scalar User {
name: String
age: Int
}

测试使用

  • 启动
yarn start  or  docker-compose build && docker-compose up -d
  • query a (return saclar 对象)
  • query b 基本对象
  • mutation (使用input)
  • directvie add

参考资料

https://github.com/prismagraphql/graphql-yoga
https://github.com/rongfengliang/graphql-yoga-dockerdemo

posted on 2018-06-25 22:03  荣锋亮  阅读(1331)  评论(0编辑  收藏  举报

导航