介绍PHP中如何安装和使用GraphQL
发布时间:2022-07-19 13:39:15 所属栏目:PHP教程 来源:互联网
导读:关于 GraphQL GraphQL 是一种现代化的 HTTP API 接口构建方式,客户端可以按需查询需要的数据。 GraphQL 可以提升 API 调用的灵活性,我们可以像写数据库查询语句一样来请求 API 来获取所需要的数据,这对构建复杂的 API 查询来说非常有用。 与REST对比 REST
|
关于 GraphQL GraphQL 是一种现代化的 HTTP API 接口构建方式,客户端可以按需查询需要的数据。 GraphQL 可以提升 API 调用的灵活性,我们可以像写数据库查询语句一样来请求 API 来获取所需要的数据,这对构建复杂的 API 查询来说非常有用。 与REST对比 REST的核心思想就是资源,每个资源都能用一个URL来表示,你能通过一个GET请求访问该URL从而获取该资源。根据当今大多数API的定义,你很有可能会得到一份JSON格式的数据响应,整个过程大概是这样: GET /user/1 { "username":"姓名", "age":20, "sex":"男" } GET /book/1 { "book":"书名", "author":"作者", "country":"中国" } 从上面的示例可以看出,如果前端需要user/1和book/1的时候需要调用2次接口,并且如果前端只需要user/1里面的username,而上面的接口获取了username以外的数据,那么对于前端而言,除 username 之外的数据无处可用,造成了资源的浪费。 如果我们使用GraphQL来进行查询的话,与REST方式相比,只需要调用一次并且可以查询我们指定的字段,避免了资源的浪费,并且更加高效。 query { user(id:1) { username } book(id:1){ book, author, country } } 推荐学习:《PHP视频教程》 安装graphql-php包 composer require webonyx/graphql-php 开始 1、安装完成之后,我们先编写一个简单示例,来看看graphql-php怎么用,具体代码如下:这段代码中,我们定义了一个名为phoneNumber的字段,然后通过postman来调用我们编写的代码。 <?php require_once __DIR__ . '/vendor/autoload.php'; use GraphQLTypeSchema; use GraphQLTypeDefinitionObjectType; use GraphQLTypeDefinitionType; use GraphQLGraphQL; $queryType = new ObjectType([ 'name' => 'Query', 'fields' => [ 'phoneNumber' => [ 'type' => Type::int(), 'resolve' => function () { return 1875555555; } ] $variableValues = isset($input['variables']) ? $input['variables'] : null; try { $rootValue = ['prefix' => 'prefix: ']; $result = GraphQL::executeQuery($schema, $query, $rootValue, null, $variableValues); $output = $result->toArray(); } catch (Exception $e) { } header('Content-Type: application/json'); echo json_encode($output); 2、使用postman来调用我们刚刚编写的代码,以下是我们查询结果的示例 1.png 介绍 从上面的示例中,我们可以看到示例主要引入了4个类 use GraphQLTypeSchema; use GraphQLTypeDefinitionObjectType; use GraphQLTypeDefinitionType; use GraphQLGraphQL; Schema 类 Schema 是类型层次结构的容器,它接受构造函数中的根类型并向内部 GrahpQL 工具提供接收你的类型信息的方法。 配置选项 包含以下选项的数组: Option Type Notes query ObjectType 必须。 读取 API 中包含根级字段的对象类型 (通常命名为 "Query"),用于读取数据 mutation ObjectType 写入 API 中包含根级字段的对象类型 (通常命名为 "Mutation"),数据变更时会用到 subscription ObjectType 保留用于将来的描述实现。目前表现为 graphql-js 自检查询的兼容,用于各种客户端 (如 Relay 或 GraphiQL) directives Directive[] 默认包含内建指令 @skip 和 @include 。 如果你传递自定义指令并且依然想使用内建指令,请声明添加它们。例如: array_merge(GraphQL::getStandardDirectives(), [$myCustomDirective]); types ObjectType[] 对象类型类表,它在静态 schema 解析期间是不能被 graphql-php 发现的。 配置选项 Option Type Notes name string 必须。 Schema 中此对象的唯一名称 fields array or callable 必须。 描述对象字段或可调用返回此类数组的数组。 description string 呈现于客户端的参数文本说明(例如:用于 GraphiQL 自动生成文档 ) interfaces array or callable 此类型实现的接口列表或返回此类列表的可调用接口。 内置标量类型 Type::float(); // Float 类型 Type::boolean(); // Boolean 类型 Type::id(); // ID 类型 字段参数 GraphQL 对象类型上的所有字段都有 0 个或多个参数,使用在 args 的字段定义上。每个参数数组参考以下说明: Option Type Notes name string 必须。 参数名称。 为空时,使用 args 数组键值 type Type 必须。 description string 呈现于客户端的参数文本说明 defaultValue scalar 当前参数默认值 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


浙公网安备 33038102330476号