GraphQL入门指南

微服务架构下,原来一个完整的应用可能被拆分成若干个功能独立的服务,在PaaS的支撑下各自运行在独立的容器中。

服务之间的同步调用以REST请求为主,这里不讨论异步调用中的事件的发布订阅。

对于访问服务的调用者,首先要装配并发出HTTP请求,然后得到服务的响应后,还需要解析数据转换为内部数据对象。这个过程与业务逻辑无关,而且繁琐难以扩展。尤其是在微服务的架构中,涉及对多个服务的调用,聚合多个服务或一个服务的多次调用,处理十分冗余,而且与业务逻辑之间有gap。如何能够从业务需求的角度统一对服务的调用呢?

GraphQL是Facebook定义的描述与业务相关的数据模型的语言规范,并提供了多种编程语言的实现。看名字是期望能够比肩数据库领域的SQL,成为服务调用领域的标准。

GraphQL位于服务的调用者与服务的提供者之间,提供给调用者统一的、与业务逻辑相关的服务查询语言。

事实上,GraphQL提供了一个类型定义系统,就类似于数据库的Schema定义。通过GraphQL可以定义与业务逻辑相关的数据类型,并为每个类型提供数据访问函数(其实就是设置数据源)。GraphQL使得服务提供者的版本、API等对服务调用者变得透明。服务调用者只需要知道想要的GraphQL类型。

GraphQL可以与服务提供者一起部署,也可以以独立的服务的形式部署。

GitHub已经全面使用GraphQL API替代了原来的REST API。

1.GraphQL支持的操作类型(Operation type)
  • query(默认),GET
  • mutation,POST
  • subscription

既然是一种查询语言&

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值