linkorb/graphael

Graphael: GraphQL 服务器构建器

安装: 650

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 4

分支: 3

开放问题: 2

类型:application

v1.22.1 2023-04-12 14:31 UTC

README

Graphael 是一个用于快速构建 GraphQL API 服务器的框架。

用法

创建一个新的项目目录,并在 composer.json 文件的 require 部分添加以下行

"require": {
  "linkorb/graphael": "^1.0"
}

创建一个 public/ 目录,并包含以下 index.php 文件

<?php

use Graphael\Server;
use Symfony\Component\Dotenv\Dotenv;

$loader = require_once __DIR__.'/../vendor/autoload.php';

// Load .env file if it exists
$envFilename = __DIR__ . '/../.env';
if (file_exists($envFilename)) {
    $dotenv = new Dotenv();
    $dotenv->load($envFilename);
}

// Application level configuration
$config = [
    'environment_prefix' => 'MY_API_',
    'type_namespace' => 'MyApi\\Type', //
    'type_path' => __DIR__ . '/../src/Type' // Directory to scan for Type classes
    'type_postfix' => 'Type',
];

// Instantiate a GraphQL server based on the configuration
$server = new Server($config);
$server->handleRequest();

应用程序配置

服务器正在使用包含以下配置 必需 选项的 $config 数组进行实例化

  • environment_prefix:环境配置变量的前缀
  • type_path:扫描 Type 类文件的目录
  • type_namespace:Type 类的命名空间。应与 composer.json 中的 PSR 4 命名空间匹配
  • type_postfix:类型类的后缀。默认为 Type

以下为 可选

  • jwt_username_claim:用于获取用户名的 JWT 断言(默认:'username'
  • jwt_roles_claim:JWT 中的用户角色断言(默认:'roles'
  • jwt_default_role:如果不存在 roles 断言时的默认用户角色(默认:'AUTHENTICATED'

环境配置

创建一个 .env 文件(或使用其他方法配置应用程序的环境变量)。

每个变量都以前面定义的 environment_prefix 为前缀,在此示例中为 MY_API_

MY_API_DEBUG=1
MY_API_PDO_URL=mysql://username:password@localhost/my_db
MY_API_JWT_KEY=supersecret

支持的 environment 变量

  • DEBUG:设置为 1 以在调试模式下运行应用程序
  • PDO_URL:到您数据库的连接字符串。支持所有 PDO 后端
  • JWT_KEY:可选。如果定义,API 仅允许使用此密钥签名的 JWT 进行连接。可以是字符串值或公钥文件的绝对路径。

身份验证

如果定义了 JWT_KEY 环境变量,服务器会在以下两个地方检查 JWT

  1. 一个 jwt 查询参数(例如 /graphql?jwt=abc.def.ghi
  2. 一个 Authorization HTTP 标头(例如 Authorization: Bearer abc.def.ghi