当前位置:网站首页 > Node.js开发 > 正文

Baas接口标准(一)——GraphQL介绍、和RESTful对比 & GraphQL客户端与服务端交互(接口调用) & apollo-server框架开发之基于Node.js的GraphQL的开发

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提供对应的数据解析
    • 客户端可以根据服务端定义的数据类型选择性查询需要的字段信息
到此这篇Baas接口标准(一)——GraphQL介绍、和RESTful对比 & GraphQL客户端与服务端交互(接口调用) & apollo-server框架开发之基于Node.js的GraphQL的开发的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 2024盘古石取证比赛(手机)2024-12-02 09:54:09
  • 小程序使用node.js开发后台接口_nodejs小程序后端2024-12-02 09:54:09
  • 如何使用 Node.js 开发简易后端项目_node.js怎么写后端2024-12-02 09:54:09
  • 搭建 Node.js 开发环境与配置 Visual Studio Code 教程_nodejs vscode开发环境的配置2024-12-02 09:54:09
  • node.js安装及环境配置超详细教程【Windows系统安装包方式】_node.js的安装步骤2024-12-02 09:54:09
  • 将node_modules 文件夹中的所有包打包成压缩包代码实现2024-12-02 09:54:09
  • nodejs事件循环与多进程(六)——Nginx是HTTP和反向代理服务器& 正向代理-不知客户端需代理、反向代理-不知服务器需代理& cluster中的优雅退出和进程守护& IPC通信是进程间的通信2024-12-02 09:54:09
  • nodejs事件循环与多进程(五)——cluster多进程模型 & worker进程使用fork()函数,实现与master进程间通信 & 惊群之发生多线程多进程等待同一个socket事件2024-12-02 09:54:09
  • nodejs事件循环与多进程(四)——Process进程-Node全局对象&child_process子进程-exec、execSync、execFile、spawn、fork & Cluster集群2024-12-02 09:54:09
  • nodejs事件循环与多进程(二)——fs和setTimeout、setImmediate关系&事件循环是异步操作&process.nextTick阻塞IO操作&app.on订阅、app.emit触发2024-12-02 09:54:09
  • 全屏图片