一、关于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类似。具体命令如下

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服务端的更多相关文章

  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. 新建MapReduce项目

    添加各种jar包 /usr/local/hadoop/share/hadoop/.. 这几个文件夹下的jar包以及它们子目录lib下的所有jar包 将/usr/local/hadoop/etc/had ...

  2. vue项目中使用bpmn-为节点添加颜色

    内容概述 本系列 “vue项目中使用bpmn-xxxx” 分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意 ...

  3. T-SQL字符串函数

    整理下MSSQL中有关时间的函数,博客记录之. ASCII 原型:ASCII ( character_expression ) 返回值:int 类型值 功能:返回输入字符串最左边的一个字符的ASCII ...

  4. Spring Boot 之Spring data JPA简介

    文章目录 添加依赖 添加entity bean 创建 Dao Spring Data Configuration 测试 Spring Boot 之Spring data JPA简介 JPA的全称是Ja ...

  5. 吞吐量(TPS)、QPS、并发数、响应时间(RT)

    1. 响应时间(RT)  响应时间是指系统对请求作出响应的时间.直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间.由于一个系统通常会提供许多功能, ...

  6. 硬纪元AI峰会前瞻:如何才能做好智能家居?用户体验最重要

    用户体验不到位,市场就不能说真的发展起来. 可以明显的感觉到,随着人工智能.物联网等技术的发展和应用,我们的生活正在发生翻天覆地的变化,其中感觉最为明显的就是智能家居. 据前瞻产业研究院的数据统计,我 ...

  7. POJ Building a Space Station 最小生成树

    Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15664   Accepted: 6865 Description You ...

  8. ASP.NET Core 如何使用Mvc相关技术建立Controller、Tag Helper (下)

    上篇文章介绍了通过定义两个接口和服务类,分别实现这两个接口,并且进行了一个服务的注册. 今天就来建立Controller 接下来就是在控制器中通过构造函数的方式注入接口(见代码块6行) 代码块2行的意 ...

  9. Educational Codeforces Round 83 E. Array Shrinking

    E. Array Shrinking 题目大意: 给你一个大小是n的序列,相邻的序列如果相等,则可以合并,合并之后的值等于原来的值加1. 求:合并之后最小的序列的和. 题解: 这个数据范围和这个相邻的 ...

  10. sshd: no hostkeys available — exiting

    在开启SSHD服务时报错.sshd re-exec requires execution with an absolute path用绝对路径启动,也报错如下:Could not load host ...