graphql-practice/

directory
v0.0.0-...-fc75448 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2023 License: MIT

README

RESTFUL API

REST API的使用方式是,server定义一系列的接口,client调用自己需要的接口,获取目标数据进行整合。REST API开发中遇到的问题:

  • 扩展性 ,随着API的不断发展,REST API的接口会变得越来臃肿。
  • 无法按需获取 ,一个返回id, name, age, city, addr, email的接口,如果仅获取部分信息,如name, age,却必须返回接口的全部信息,然后从中提取自己需要的。坏处不仅会增加网络传输量,并且不便于client处理数据
  • 一个请求无法获取所需全部资源 ,例如client需要显示一篇文章的内容,同时要显示评论,作者信息,那么就需要调用文章、评论、用户的接口。坏处造成服务的的维护困难,以及响应时间变长 。
    • 原因: REST API通常由多个端点组成,每个端点代表一种资源。所以,当client需要多个资源是,它需要向REST API发起多个请求,才能获取到所需要的数据。
  • REST API不好处理的问题, 比如确保client提供的参数是类型安全的,如何从代码生成API的文档等。

GraphQL解决的问题:

  • 请求你的数据不多不少:GraphQL查询总是能准确获得你想要的数据,不多不少,所以返回的结果是可预测的。
  • 获取多个资源只用一个请求 :GraphQL查询不仅能够获得资源的属性,还能沿着资源间进一步查询,所以GraphQL可以通过一次请求就获取你应用所需的所有数据。
  • 描述所有的可能类型系统: GraphQL API基于类型和字段的方式进行组成,使用类型来保证应用只请求可能的类型,同时提供了清晰的辅助性错误信息。
  • 使用你现有的数据和代码: GraphQL让你的整个应用共享一套API,通过GraphQL API能够更好的利用你的现有数据和代码。GraphQL 引擎已经有多种语言实现,GraphQL不限于某一特定数据库,可以使用已经存在的数据、代码、甚至可以连接第三方的APIs。
  • API 演进无需划分版本: 给GraphQL API添加字段和类型而无需影响现有查询。老旧字段可以废弃,从工具中隐藏。

什么是GraphQL

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

  • API不是用来调用的吗?是的,者正是GraphQL的强大之处,引用官方文档的一句话ask exactly what you want
  • 本质上来说GraphQL是一种查询语言
  • 上述的定义其实很难理解,只有真的使用过GraphQL才能够理解。

在GraphQL中,通过定义一张Schema和声明一些Type来达到上述描述的功能,需要学习:

  • 对于数据模型的抽象是通过Type来描述的 ,如何定义Type?
  • 对于接口获取数据的逻辑是通过schema来描述的 ,如何定义schema?

Reference

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL