GraphQL - 简介 GraphGL教程 GraphQL - 环境设置 GraphQL是一种开源服务器端技术,由Facebook开发,用于优化RESTful API调用。它是一个执行引擎和一种数据查询语言。在本章中,我们将讨论使用GraphQL的优势。 为何选择GraphQL RESTful API遵循清晰且结构良好的面向资源的方法。但是,当数据变得更复杂时,路由会变得更长。有时无法通过单个请求获取数据。这是GraphQL派上用场的地方。GraphQL以图形的形式构建数据,其强大的查询语法用于遍历,检索和修改数据。 以下是使用GraphQL查询语言的优点 问你想要什么 - 并得到它 将GraphQL查询发送到您的API并获得您需要的内容。GraphQL查询始终返回可预测的结果。使用GraphQL的应用程序快速而稳定。与Restful服务不同,这些应用程序可以限制应从服务器获取的数据。 以下示例将帮助您更好地理解这一点 让我们考虑具有属性id,firstName,lastName和collegeName的业务对象Student。假设移动应用程序只需要获取firstName和id。如果我们设计一个像/ api / v1 / students这样的REST端点,它将最终获取学生对象的所有字段的数据。这意味着,RESTful服务会过度提取数据。使用GraphQL可以解决此问题。 考虑下面给出的GraphQL查询 { students { id firstName } } 这将仅返回id和firstname字段的值。查询不会获取学生对象的其他属性的值。上述查询的响应如下所示 - { "data": { "students": [ { "id": "S1001", "firstName": "Mohtashim" }, { "id": "S1002", "firstName": "Kannan" } ] } } 在单个请求中获取许多资源 GraphQL查询有助于平滑地检索关联的业务对象,而典型的REST API需要从多个URL加载。GraphQL API在单个请求中获取应用程序所需的所有数据。使用GraphQL的应用程序甚至可以在慢速移动网络连接上快速完成。 让我们再考虑一个业务对象,College,它具有以下属性:名称和位置。该学生的业务对象具有大学对象的关联关系。如果我们要使用REST API来获取学生及其大学的详细信息,我们最终会向服务器发出两个请求,例如/ api / v1 / students和/ api / v1 / schools。这将导致每次请求获取数据不足。因此,移动应用程序被迫多次调用服务器以获取所需数据。 但是,移动应用程序可以使用GraphQL在单个请求中获取Student和College对象的详细信息。 以下是用于获取数据的GraphQL查询 { students{ id firstName lastName college{ name location } } } 上述查询的输出正好包含我们请求的字段,如下所示 - { "data": { "students": [ { "id": "S1001", "firstName": "Mohtashim", "lastName": "Mohammad", "college": { "name": "CUSAT", "location": "Kerala" } }, { "id": "S1002", "firstName": "Kannan", "lastName": "Sudhakaran", "college": { "name": "AMU", "location": "Uttar Pradesh" } }, { "id": "S1003", "firstName": "Kiran", "lastName": "Panigrahi", "college": { "name": "AMU", "location": "Uttar Pradesh" } } ] } } 描述类型系统的可能性 GraphQL是强类型的,查询基于字段及其关联的数据类型。如果GraphQL查询中存在类型不匹配,则服务器应用程序将返回明确且有用的错误消息。这有助于客户端应用程序顺利调试和轻松检测错误。GraphQL还提供了客户端库,可以帮助减少显式数据转换和解析。 学生和学院数据类型的示例如下 - type Query { students:[Student] } type Student { id:ID! firstName:String lastName:String fullName:String college:College } type College { id:ID! name:String location:String rating:Float students:[Student] } 使用功能强大的开发人员工 GraphQL为文档和测试查询提供了丰富的开发人员工具。GraphiQL是一个出色的工具,可以生成查询及其模式的文档。它还提供了一个查询编辑器,用于在构建查询时测试GraphQL API和智能代码完成功能。 GraphGL教程 GraphQL - 环境设置