一、关于Apollo Server

  Apollo Server是一种使用JS创建GraphQL服务端的一个方案。它的兼容性比较好,可以很好地和GraphQL客户端进行兼容。同时它可以

  1. 独立作为服务端进行
  2. 以插件的形式与现有的NodeJS 服务端程序进行兼容
  3. 可以作为一个GraphQL的数据网关。

  官网地址:https://www.apollographql.com/docs/apollo-server/

二、搭建Apollo GraphQL Server

  1) 和搭建Node Server类似。具体命令如下

  1. npm init --yes
    npm i apollo-server graphql
  • apollo-server 是Apollo Server的核心库
  • graphql是用于构建GraphQL Schema和执行查询的核心库

  2) 使用Babel配置ES6

  1. npm i @babel/cli @babel/core @babel/node @babel/preset-env

  3) 创建GraphQL Schema

  • 创建graphtype

    1. import { gql } from "apollo-server";
    2.  
    3. export default gql`
    4. type Book {
    5. title: String
    6. author: String
    7. }
    8. `;
  • 创建query graphtype
  1. import { gql } from "apollo-server";
  2.  
  3. export default gql`
  4. type Query {
  5. books: [Book]
  6. }
  7. `;
  1. import bookTypes from "./book.types";
  2. import queries from "./queries";
  3. export default [bookTypes, queries];
  • 创建resolver
  1. import dataset from "../dataset"; // dataset即为数据源
  2. const Query = {
  3. books: () => dataset.books,
  4. };
  5.  
  6. const resolvers = {
  7. Query,
  8. };
  9. export default resolvers;
  • 创建schema
  1. import { makeExecutableSchema } from "apollo-server";
  2. import typeDefs from "@graphtypes";// 这是配置了alias,引用的是graph type的导出,即export default [bookTypes, queries];
  1. import resolvers from "@resolver";
    export default makeExecutableSchema({ typeDefs, resolvers, });

  3) 配置启动脚本

  1. import "module-alias/register";
  2. import { ApolloServer } from "apollo-server";
  3. import schema from "@schema";
  4. import plugins from "@plugins";
  5. const port = 8080;
  6. const server = new ApolloServer({
  7. schema,
  8. plugins,
  9. formatError: (err) => {
  10. // 设置响应的错误信息进行格式化处理
  11. return err.message;
  12. },
  13. });
  14.  
  15. server.listen({ port }).then((serverInfo) => {
  16. console.log("====================================");
  17. console.log(`Apollo GraphQL Server are listening at ${serverInfo.url}`);
  18. console.log("====================================");
  19. });

三、配置package.json

  1. "scripts": {
  2. "dev": "nodemon --exec babel-node index.js",
  3. "test": "echo \"Error: no test specified\" && exit 1"
  4. },

四、启动和测试

运行命令:

  1. npm run dev

项目会运行在http://localhost:8080

因为Apollo GraphQL Server将PlayGround整合进去了,所以可以直接使用playground进行调试

项目代码可查看:

https://gitee.com/KingGang/apollo-graphql-server-management

GraphQL-- 使用Apollo Server搭建Node服务端的更多相关文章

  1. Node服务端极速搭建 - nvmhome

    本文意在让你掌握极速搭建Node服务端(任何Project) $ whoami name: kelvin email: kelvv@outlook.com homepage: www.kelvv.co ...

  2. Node服务端极速搭建 -- nvmhome

    > 本文意在让你掌握极速搭建Node服务端(任何Project) ```$ whoaminame: kelvinemail: kelvv@outlook.comhomepage: www.kel ...

  3. node服务端搭建学习笔记

    咳咳,终于迈出这一步了...这篇文章将是边学边写的真正笔记...用于mark下学习过程中的点滴~ 开篇先把我学习参考的文章来源给出,以表示对前人的尊敬: https://github.com/nswb ...

  4. 《用OpenResty搭建高性能服务端》笔记

    概要 <用OpenResty搭建高性能服务端>是OpenResty系列课程中的入门课程,主讲人:温铭老师.课程分为10个章节,侧重于OpenResty的基本概念和主要特点的介绍,包括它的指 ...

  5. contos7搭建syslog服务端与客户端

    搭建中心服务端1,编辑文件/etc/rsyslog.conf,找到以下内容,将前面的#注释符合去除#$ModLoad imtcp#$InputTCPServerRun 514 2,在/etc/rsys ...

  6. vue.js+koa2项目实战(四)搭建koa2服务端

    搭建koa2服务端 安装两个版本的koa 一.版本安装 1.安装 koa1 npm install koa -g 注:必须安装到全局 2.安装 koa2 npm install koa@2 -g 二. ...

  7. Centos6.9 搭建rsync服务端与客户端 案例:全网备份项目

    rsync的企业工作场景说明 1)定时备份 1.1生产场景集群架构服务器备份方案项目 借助cron+rsync把所有客户服务器数据同步到备份服务器 2)实时复制 本地数据传输模式(local-only ...

  8. 快速搭建Kerberos服务端及入门使用

    快速搭建Kerberos服务端及入门使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Kerberos是一种网络身份验证协议.它旨在通过使用秘密密钥加密为客户端/服务器应用程序提 ...

  9. OpenResty搭建高性能服务端

    OpenResty搭建高性能服务端   Socket编程 Linux Socket编程领域为了处理大量连接请求场景,需要使用非阻塞I/O和复用,select.poll.epoll是Linux API提 ...

随机推荐

  1. ansible的基础概念与部署(一)

  2. Pascal 字符串

    Dancing with Strings http://baskent.edu.tr/~tkaracay/etudio/ders/prg/pascal/PasHTM1/pas/pasl1007.htm ...

  3. Ubuntu 设置 log 级别

    Linux环境下使用rsyslog管理日志 rsyslog linux运维 linux 22.7k 次阅读  ·  读完需要 22 分钟     在 Linux 系统中,日志文件记录了系统中包括内核. ...

  4. Windows挂载Gluster复制卷

    本地挂载测试 mount -t glusterfs 127.0.0.1:/gv1 /mnt [root@gluster1 mnt]# df -h Filesystem Size Used Avail ...

  5. 如何用hugo 搭建博客

    1,Hugo 简介 搭建个人博客有很多开源的博客框架,我们要介绍的框架叫作Hugo.Hugo 是一个基于Go 语言的框架,可以快速方便的创建自己的博客. Hugo 支持Markdown 语法,我们可以 ...

  6. 运用jieba库统计词频及制作词云

    一.对中国十九大报告做词频分析 import jieba txt = open("中国十九大报告.txt.txt","r",encoding="utf ...

  7. mac OS git关联github

    正在更新 mac OS 默认安装了git  git -v 查看版本 mac OS 默认安装了ssh  ssh -v 查看版本 1.设置username和email(github每次commit都会记录 ...

  8. Visual Studio Code mac OS 安装 中文简体语言包

    先下载中文简体语言包 官网 https://marketplace.visualstudio.com/search?target=VSCode&category=Language%20Pack ...

  9. Git初始化本地代码及提交到服务器

    2019独角兽企业重金招聘Python工程师标准>>> 1.先安装Git客户端 2.进入需要提交的文件夹目录 3.打开Git Bash,点击右键中的Git Bash 打开git命令窗 ...

  10. Linux 开发之线程条件锁那些事

    2019独角兽企业重金招聘Python工程师标准>>> 条件锁即在一定条件下触发,那什么时候适合用条件锁呢,那当然是你在等待一个符合的条件下触发.一个常用的例子就是在线程中无限循环执 ...