RESTful与GraphQL

RESTful和GraphQL通俗理解:对于前后端分离的项目,后端通常把数据接口定义成RESTful API或者GraphQL,可以把RESTful和GraphQL理解成是浏览器与服务器通信方式的一种设计风格。

  1. REST API请求的的生命周期:
    (1) 服务器收到请求并提取出HTTP方法名(比如这里就是GET方法)与URL路径
    (2) API框架找到提前注册好的、请求路径与请求方法都匹配的代码
    (3) 该段代码被执行,并得到相应结果
    (4) API框架对结果进行序列化,添加上适当的状态码与响应头后,返回给客户端

  2. 服务器对一个GraphQL请求的执行过程:graphql
    (1) 服务器收到HTTP请求,取出其中的GraphQL查询
    (2) 遍历查询语句,调用里面每个字段所对应的Resolver。在这个例子里,只有Query这个类型中的一个字段hello
    (3) Resolver函数被执行并返回相应结果
    (4) GraphQL框架把结果根据查询语句的要求进行组装

schema: 服务端定义的API接口,本质上是一个类型系统

在这里插入图片描述
在这里插入图片描述
(1) graphql在对象上选取字段,如果这个字段返回的又是一个对象,你可以在它里面继续选取字段。

(2) graphql查询的方式是声明式的,在查询语言里声明需要什么形状的数据,服务器就会返回什么形状的结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
DOCS以一种用户友好的方式展现API
在这里插入图片描述
命名冲突问题:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之前省略了operation type(操作类型: {}前默认为query)和operation name(操作名字),如果没有operation name,它就像javascript里的匿名函数一样,可以使用它,但很难定位它。例如很多query没有命名的话,在调试或在服务器日志里,我们看到query,但不知道名字,很难定位其在代码的哪个地方使用,起个有意义的名字可以更好的帮助查询。除了query还有两种:
mutation: 用于修改数据
subscription: 用于订阅数据修改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
mutation: 用于修改数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Restful: Restful是一种软件架构风格,用于构建可伸缩的网络应用程序。它基于HTTP协议,通过使用统一的接口和资源标识符(URI)来进行通信。Restful架构的核心原则是无状态、可缓存、客户端-服务器分离和统一接口。它使用HTTP方法(GET、POST、PUT、DELETE等)来操作资源,并使用JSON或XML等格式来传输数据。 GraphQL: GraphQL是一种用于API开发的查询语言和运行时环境。它提供了一种灵活的方式来定义和查询数据模型,使客户端能够精确地获取所需的数据,避免了过度获取或不足获取的问题。GraphQL使用类型系统来描述数据模型,并通过查询语言来定义客户端请求的数据结构。与传统的RESTful API相比,GraphQL具有更高的灵活性和效率。 Soap: SOAP(Simple Object Access Protocol)是一种基于XML的通信协议,用于在网络上交换结构化信息。它定义了一种标准的消息格式和通信规范,使得不同平台和编程语言之间可以进行远程调用和消息传递。SOAP通常使用HTTP作为传输协议,但也可以使用其他协议如SMTP、FTP等。 Dubbo: Dubbo是一个高性能的分布式服务框架,用于构建大规模分布式系统。它提供了服务注册、发现、调用和负载均衡等功能,使得分布式系统的开发和管理更加简单。Dubbo支持多种通信协议和序列化方式,并提供了可扩展的插件机制,可以与其他框架和中间件进行集成。 RPC(Remote Procedure Call): RPC是一种远程过程调用协议,用于实现分布式系统中的进程间通信。它允许一个进程调用另一个进程的函数或方法,就像调用本地函数一样。RPC隐藏了底层通信细节,使得分布式系统的开发更加简单。常见的RPC框架有gRPC、Thrift、Apache Avro等。 WebSocket: WebSocket是一种在单个TCP连接上进行全双工通信的协议。它提供了实时的、双向的数据传输能力,使得服务器可以主动向客户端推送数据,而不需要客户端发起请求。WebSocket通常用于实时聊天、实时数据更新等场景,与传统的HTTP请求-响应模式相比,具有更低的延迟和更高的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值