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提 ...
随机推荐
- 一不小心实现了RPC
前言 随着最近关注 cim 项目的人越发增多,导致提的问题以及 Bug 也在增加,在修复问题的过程中难免代码洁癖又上来了. 看着一两年前写的东西总是怀疑这真的是出自自己手里嘛?有些地方实在忍不住了便开 ...
- Spring Cloud 系列之 Sleuth 链路追踪(三)
本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Sleuth 链路追踪(一) Spring Cloud 系列之 Sleuth 链路追踪(二) 本篇文章讲解 Sleu ...
- Python(10)
如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a.b.c可能的组合? # 注意是三重循环 for a in range(0, 1001): for b i ...
- ip-端口-协议等基本概念
互联网上的计算机,都会有一个唯一的32位的地址——ip地址.我们访问服务器,就必须通过这个ip地址. 局域网里也有预留的ip地址:192/10/172开头.局域网里的ip地址也是唯一的. NA ...
- Eclipse Mac OS 安装中文简体语言包
打开Eclipse软件,在导航Eclipse下拉菜单中点开 About Eclipse 查看版本 我的是 Eclipse IDE for Enterprise Java Developers. Ver ...
- JavaScript面向对象那些东西-继承
继承 父类里有些属性方法 子类想把父类中的这些属性方法 继承过来给子类自己的实例也用用 ( ps: →_→ 能不能专业点 没文化真可怕 ) 一.原型链继承 // 原型链继承:把子类的原型作为父类的实例 ...
- nginx经验分享
如果我们在使用启动nginx时,遇到这样的提示: nginx: [alert] could not open error log file: open() "/usr/local/var/l ...
- 无向图求割(找桥)tarjan
本博客参考了李煜东的<算法竞赛进阶指南>,大家要是觉得这篇文章写的不错请大家支持正版.豆瓣图书 我在之前的博客中讲解了搜索序时间戳,这次我们讲讲追溯值的概念. 追溯值: 设subtree( ...
- 2019 ICPC 南京网络赛 H-Holy Grail
As the current heir of a wizarding family with a long history,unfortunately, you find yourself force ...
- 一个简单的wed服务器SHTTPD(2)———— 客户端请求分析
//start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...