Baas接口标准(一)——GraphQL介绍、和RESTful对比 & GraphQL客户端与服务端交互(接口调用) & apollo-server框架开发之基于Node.js的GraphQL的开发
第1章 GraphQL 介绍
接口开发方式
- RESTful
- GraphQL
RESTful 接口问题
- 接口粒度比较细,很多场景需要调用多次请求才能完成一个功能
- 接口扩展、维护成本高
- 接口响应的数据格式无法预知(json已经成为主流格式)
GraphQL概述
GraphQL 既是一种用于 API 的查询语言,也是一个满足你数据查询的运行时。
是一种接口开发标准,支持常见的服务端开发语言。例如:java、php、Python、Node.js…
官网:https://graphql.cn/
RESTful 和 GraphQL 对比
- RESTful特点
- 接口粒度太细
- 后期版本变更不方便,扩展维护成本高
- GraphQL特点
- 精确获取需要的信息
- 通过单个请求获取各种资源
- 通过类型系统描述查询
- 强大的调试工具
第2章 GraphQL 快速体验
GraphQL客户端与服务端交互(接口调用)
- 实现步骤
- 一、服务端
- 创建服务端项目目录
- 初始化项目
- npm init -y
- 创建入口文件index.js
- 安装依赖包
- apollo-server-express
- express
- graphql
- 复制官方案例代码到index.js
- 运行该文件启动服务
- 二、客户端
- 通过访问http://localhost:4000/graphql 地址打开调试工具就可以进行接口测试
- 在调试工具中进行查询测试
- 获取测试结果
- 一、服务端
- 总结
- 只有一个请求地址
- 按需进行查询
- 有特定的查询语法规则
第3章 GraphQL服务端开发
基于Node.js的GraphQL的开发
- GraphQL.js GraphQL规范的JavaScript实现(服务端数据提供和客户端请求)
- express 基于express创建HTTP服务,内部依赖GraphQL.js
- apollo-server GraphQL服务器实现(支持express、koa等多种Web框架)
- express
- koa
- …
基于apollo-server开发
apollo-server 是一个实现了GraphQL 规范的框架,可以基于它快速开发基于GraphQL的服务端接口,并且方便客户端进行接口调用。
- 基本开发步骤(服务端)
- 初始化服务端项目
- 创建项目目录
- 创建入口文件
- 初始化项目 npm init -y
- 安装依赖包
- npm install apollo-server-express express graphql -S
- 定义类型
- 解析数据
- 实例化apollo对象
- 整合express并监听端口,提供Web服务
- 初始化服务端项目
// 1、导入相关的依赖包 const express = require('express'); const {
ApolloServer, gql } = require('apollo-server-express'); // 2、定义数据类型 const typeDefs = gql` type Query { hello: String } `; // 3、解析字段数据;解析数据类型对应的具体数据 const resolvers = {
Query: {
hello: () => 'Hello world!', }, }; // 4、整合ApolloServer和express const server = new ApolloServer({
typeDefs, resolvers }); const app = express(); server.applyMiddleware({
app }); // 5、监听端口;启动监听 app.listen({
port: 4000 }, () => console.log(`running at http://localhost:4000${
server.graphqlPath}`) );
- 客户端
// 查询 query { hello } // 响应结果 { "data": { "hello": "world" } }
- 细节分析
- 服务器通过定义的数据类型规定了可以提供的各种形式的数据
- 类型的字段要有对应的resolve提供对应的数据解析
- 客户端可以根据服务端定义的数据类型选择性查询需要的字段信息
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-nodejs/10730.html