GraphQL-- 使用Apollo Server搭建Node服务端
一、关于Apollo Server
Apollo Server是一种使用JS创建GraphQL服务端的一个方案。它的兼容性比较好,可以很好地和GraphQL客户端进行兼容。同时它可以
- 独立作为服务端进行
- 以插件的形式与现有的NodeJS 服务端程序进行兼容
- 可以作为一个GraphQL的数据网关。
官网地址:https://www.apollographql.com/docs/apollo-server/
二、搭建Apollo GraphQL Server
1) 和搭建Node Server类似。具体命令如下
- npm init --yes
npm i apollo-server graphql
- apollo-server 是Apollo Server的核心库
- graphql是用于构建GraphQL Schema和执行查询的核心库
2) 使用Babel配置ES6
- npm i @babel/cli @babel/core @babel/node @babel/preset-env
3) 创建GraphQL Schema
- 创建graphtype
- import { gql } from "apollo-server";
- export default gql`
- type Book {
- title: String
- author: String
- }
- `;
- 创建query graphtype
- import { gql } from "apollo-server";
- export default gql`
- type Query {
- books: [Book]
- }
- `;
- import bookTypes from "./book.types";
- import queries from "./queries";
- export default [bookTypes, queries];
- 创建resolver
- import dataset from "../dataset"; // dataset即为数据源
- const Query = {
- books: () => dataset.books,
- };
- const resolvers = {
- Query,
- };
- export default resolvers;
- 创建schema
- import { makeExecutableSchema } from "apollo-server";
- import typeDefs from "@graphtypes";// 这是配置了alias,引用的是graph type的导出,即export default [bookTypes, queries];
- import resolvers from "@resolver";
export default makeExecutableSchema({ typeDefs, resolvers, });
3) 配置启动脚本
- import "module-alias/register";
- import { ApolloServer } from "apollo-server";
- import schema from "@schema";
- import plugins from "@plugins";
- const port = 8080;
- const server = new ApolloServer({
- schema,
- plugins,
- formatError: (err) => {
- // 设置响应的错误信息进行格式化处理
- return err.message;
- },
- });
- server.listen({ port }).then((serverInfo) => {
- console.log("====================================");
- console.log(`Apollo GraphQL Server are listening at ${serverInfo.url}`);
- console.log("====================================");
- });
三、配置package.json
- "scripts": {
- "dev": "nodemon --exec babel-node index.js",
- "test": "echo \"Error: no test specified\" && exit 1"
- },
四、启动和测试
运行命令:
- npm run dev
项目会运行在http://localhost:8080
因为Apollo GraphQL Server将PlayGround整合进去了,所以可以直接使用playground进行调试
项目代码可查看:
https://gitee.com/KingGang/apollo-graphql-server-management
GraphQL-- 使用Apollo Server搭建Node服务端的更多相关文章
- Node服务端极速搭建 - nvmhome
本文意在让你掌握极速搭建Node服务端(任何Project) $ whoami name: kelvin email: kelvv@outlook.com homepage: www.kelvv.co ...
- Node服务端极速搭建 -- nvmhome
> 本文意在让你掌握极速搭建Node服务端(任何Project) ```$ whoaminame: kelvinemail: kelvv@outlook.comhomepage: www.kel ...
- node服务端搭建学习笔记
咳咳,终于迈出这一步了...这篇文章将是边学边写的真正笔记...用于mark下学习过程中的点滴~ 开篇先把我学习参考的文章来源给出,以表示对前人的尊敬: https://github.com/nswb ...
- 《用OpenResty搭建高性能服务端》笔记
概要 <用OpenResty搭建高性能服务端>是OpenResty系列课程中的入门课程,主讲人:温铭老师.课程分为10个章节,侧重于OpenResty的基本概念和主要特点的介绍,包括它的指 ...
- contos7搭建syslog服务端与客户端
搭建中心服务端1,编辑文件/etc/rsyslog.conf,找到以下内容,将前面的#注释符合去除#$ModLoad imtcp#$InputTCPServerRun 514 2,在/etc/rsys ...
- vue.js+koa2项目实战(四)搭建koa2服务端
搭建koa2服务端 安装两个版本的koa 一.版本安装 1.安装 koa1 npm install koa -g 注:必须安装到全局 2.安装 koa2 npm install koa@2 -g 二. ...
- Centos6.9 搭建rsync服务端与客户端 案例:全网备份项目
rsync的企业工作场景说明 1)定时备份 1.1生产场景集群架构服务器备份方案项目 借助cron+rsync把所有客户服务器数据同步到备份服务器 2)实时复制 本地数据传输模式(local-only ...
- 快速搭建Kerberos服务端及入门使用
快速搭建Kerberos服务端及入门使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Kerberos是一种网络身份验证协议.它旨在通过使用秘密密钥加密为客户端/服务器应用程序提 ...
- OpenResty搭建高性能服务端
OpenResty搭建高性能服务端 Socket编程 Linux Socket编程领域为了处理大量连接请求场景,需要使用非阻塞I/O和复用,select.poll.epoll是Linux API提 ...
随机推荐
- ansible的基础概念与部署(一)
- Pascal 字符串
Dancing with Strings http://baskent.edu.tr/~tkaracay/etudio/ders/prg/pascal/PasHTM1/pas/pasl1007.htm ...
- Ubuntu 设置 log 级别
Linux环境下使用rsyslog管理日志 rsyslog linux运维 linux 22.7k 次阅读 · 读完需要 22 分钟 在 Linux 系统中,日志文件记录了系统中包括内核. ...
- Windows挂载Gluster复制卷
本地挂载测试 mount -t glusterfs 127.0.0.1:/gv1 /mnt [root@gluster1 mnt]# df -h Filesystem Size Used Avail ...
- 如何用hugo 搭建博客
1,Hugo 简介 搭建个人博客有很多开源的博客框架,我们要介绍的框架叫作Hugo.Hugo 是一个基于Go 语言的框架,可以快速方便的创建自己的博客. Hugo 支持Markdown 语法,我们可以 ...
- 运用jieba库统计词频及制作词云
一.对中国十九大报告做词频分析 import jieba txt = open("中国十九大报告.txt.txt","r",encoding="utf ...
- mac OS git关联github
正在更新 mac OS 默认安装了git git -v 查看版本 mac OS 默认安装了ssh ssh -v 查看版本 1.设置username和email(github每次commit都会记录 ...
- Visual Studio Code mac OS 安装 中文简体语言包
先下载中文简体语言包 官网 https://marketplace.visualstudio.com/search?target=VSCode&category=Language%20Pack ...
- Git初始化本地代码及提交到服务器
2019独角兽企业重金招聘Python工程师标准>>> 1.先安装Git客户端 2.进入需要提交的文件夹目录 3.打开Git Bash,点击右键中的Git Bash 打开git命令窗 ...
- Linux 开发之线程条件锁那些事
2019独角兽企业重金招聘Python工程师标准>>> 条件锁即在一定条件下触发,那什么时候适合用条件锁呢,那当然是你在等待一个符合的条件下触发.一个常用的例子就是在线程中无限循环执 ...