linkorb / graphael
Graphael: GraphQL 服务器构建器
v1.22.1
2023-04-12 14:31 UTC
Requires
- php: >=7.2
- ext-pdo: *
- doctrine/cache: ^1.10
- firebase/php-jwt: ~5.0
- linkorb/connector: ~1.0
- pwa/time-elapsed: ^1.0
- symfony/dependency-injection: ~3.3
- symfony/http-foundation: ^4.2 || ^5.0
- symfony/options-resolver: ~3.0
- symfony/security-core: ^4.2 || ^5.0
- webonyx/graphql-php: ^0.13.8
This package is auto-updated.
Last update: 2024-09-12 17:44:32 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
- 一个
jwt
查询参数(例如/graphql?jwt=abc.def.ghi
) - 一个
Authorization
HTTP 标头(例如Authorization: Bearer abc.def.ghi
)