入门

未匹配的标注

先决条件

本文档假定你熟悉 GraphQL 的概念。 如果不是这样,请首先在 官方网站 上面了解 GraphQL。

安装

使用 composer,只需要在终端里边运行已下命令:

composer require webonyx/graphql-php

升级

我们尽量保证类库的版本向后兼容。但是,当一些变化不可避免时,他们会在 升级说明 中进行说明。

安装工具(可选)

尽管可以使用常规的 HTTP 工具与 GraphQL API 进行通信,但人们使用 GraphiQL(浏览器内置的 IDE )更便于探索 GraphQL API。

它为 GraphQL API 提供语法高亮显示,自动完成和自动生成文档。

使用它的最简单方法是安装一个 Google Chrome 浏览器扩展程序:

或者,你可以按照 GraphiQL
页面上的说明进行安装。

Hello World

让我创建一个能够处理以下简单查询的类型系统:

query {
  echo(message: "Hello World")
}

为此,我们需要构建一个包含 echo 字段的类型对象:

<?php
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;

$queryType = new ObjectType([
    'name' => 'Query',
    'fields' => [
        'echo' => [
            'type' => Type::string(),
            'args' => [
                'message' => Type::nonNull(Type::string()),
            ],
            'resolve' => function ($root, $args) {
                return $root['prefix'] . $args['message'];
            }
        ],
    ],
]);

(注意:类型定义可以使用 不同的方式 来表达,本示例为了简便而使用了 内联(inline) 的样式)

这里有趣的是 resolve 的字段定义,它负责返回我们类型对象的值。scalar 将直接包含在响应中,而
composite 字段(对象、接口、组合)的值将会传递给嵌套字段解析器(但没在本例中)。

现在我们的类型对象已经准备好了,接下来为它创建一个名为 graphql.php 的 GraphQL 终端文件:

<?php
use GraphQL\GraphQL;
use GraphQL\Type\Schema;

$schema = new Schema([
    'query' => $queryType
]);

$rawInput = file_get_contents('php://input');
$input = json_decode($rawInput, true);
$query = $input['query'];
$variableValues = isset($input['variables']) ? $input['variables'] : null;

try {
    $rootValue = ['prefix' => 'You said: '];
    $result = GraphQL::executeQuery($schema, $query, $rootValue, null, $variableValues);
    $output = $result->toArray();
} catch (\Exception $e) {
    $output = [
        'errors' => [
            [
                'message' => $e->getMessage()
            ]
        ]
    ];
}
header('Content-Type: application/json');
echo json_encode($output);

我们的示例完成了,试着运行一下:

php -S localhost:8080 graphql.php
curl http://localhost:8080 -d '{"query": "query { echo(message: \"Hello World\") }" }'

查看本示例的完整 源代码 ,其中还包括简单的变动。

很明显,Hello World 的示例仅仅展示了它的冰山一角。因此请开始下一个更接近真实应用的示例,或者继续阅读 Schema 定义

博客示例

从一个具有全功能的实际示例开始学习,然后再返回到文档通常会更便于理解。

查看 博客示例 GraphQL API。它非常接近于我们在实际工作中开发 GraphQL 的层次结构。 按照说明,并在大约10分钟内尝试一下。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/graphql-php/get...

译文地址:https://learnku.com/docs/graphql-php/get...

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
贡献者:3
讨论数量: 0
发起讨论 只看当前版本


暂无话题~