• 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

  • 相关阅读:
    Div高度百分比
    字典树模板题 POJ 2503
    POJ 2828
    POJ 2186
    HDU 3397 双lazy标记的问题
    HDU 3911 区间合并求最大长度的问题
    CodeForces 444C 节点更新求变化值的和
    POJ 3667 线段树的区间合并简单问题
    HDU 4578 线段树复杂题
    UVAlive 3211 Now or Later
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/9226568.html
Copyright © 2020-2023  润新知