• GraphQL入门


    上半年公司分享会,选了个GraphQL的主题,只是做了个简单的分享,东拼拼西凑凑,算是完成了吧

    一 GraphQL是什么?

    一种用于 API 的查询语言

    GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

    一种用于API的查询语言,听着像是sql语言一样定义了数据的增删改查操作。一套易于理解的完整描述其实就是后面提到的schema,后面的功能都是以这个作为了基础。

    特地准备了个简单的例子,通过applo的例子代码搞的,我们下面的例子代码都是以这个场景设计的,比较简单没时间完善

         https://github.com/legu2009/graphql-todolist-demo

    二  API数据的描述 -- Schema 模式(在服务器端定义的)

         graphql-todolist-demo/server/src/schema.js

    下面例子里面的数据描述文件,里面有一些基础类型和自定义对象类型

    下面这个是定义增删改(Mutation),查(Query),实时通信(Subscription)

     server跑起来会有个playground的页面对接口进行调试,下面是体现下实际接口请求返回的数据:

    通过查询我们可以发现,请求的是怎么样的数据结构,返回的就是对应的结构

     

    也可以定义一些变量,这样就可以复用

    Subscription,实例在demo里面有,应为ppt是录了个视频,这边就不贴例子了

    三 GraphQL的优点

    1.强类型 Schema,有了强类型的Schema,一切都变成了可能

    2.按需要加载,减少带宽,不必要的数据查询

    3.更好的快速开发产品

    下面特地举了个接口组装的例子,就是获得了第3方的schema定义,通过nodejs去调用第3放的Graphql的接口,代码更易懂

    我们可以看到,一切的基础都是schema文件。规范了服务器端和客户端开发,成为了服务器端和客户端之间的桥梁

    四 GraphQL的缺点

    1.不可预测的执行,对于同一个操作,由于请求体的结构不一样,对应的接口复杂度是不可预知的。由于灵活性,还有n+1问题,

    2.也没办法查询不限深度的数据(树),对于接口权限和接口调用权限的限制都不好处理。

  • 相关阅读:
    Linux -- 查看是否安装了指定的包
    linux -- 部署java服务器(1) linux安装jdk
    spring boot -- 接收文件接口
    vue3 --相对于vue2的改变T1档次
    243交换输出
    24416进制的简单运算
    7街区最短路径问题
    206矩形的个数
    33蛇形填数
    273字母小游戏
  • 原文地址:https://www.cnblogs.com/legu/p/11288085.html
Copyright © 2020-2023  润新知