GraphQL是Facebook开源的查询语言,相比REST API有很多优势。这篇文章介绍GraphQL的基本概念和实践经验。
按需获取。前端需要哪些字段就查询哪些,不会多也不会少。不像REST API,一个接口返回固定结构,经常有多余数据。
单一端点。所有查询都发到同一个/graphql端点,通过查询语句描述需要什么数据。
强类型Schema。API结构清晰,有自动文档和类型检查,前后端协作更顺畅。
REST需要多次请求获取关联数据,GraphQL一次查询就能拿到。比如获取文章和作者信息,REST要调两个接口,GraphQL一个查询搞定。
但GraphQL也有缺点:缓存复杂、文件上传麻烦、学习成本较高。小项目用REST更简单,大项目用GraphQL收益更大。
用Apollo Server搭建GraphQL服务很简单。定义Schema描述数据结构,写Resolver处理查询逻辑,几行代码就能跑起来。
前端用Apollo Client,有缓存、订阅、错误处理等功能,开发体验很好。
GraphQL不是银弹,但在复杂应用场景下确实能提升开发效率。值得学习和尝试。