linkorb / graphael
Graphael: GraphQL Server builder
Installs: 654
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 4
Forks: 3
Open Issues: 2
Type:application
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-12-12 18:14:44 UTC
README
Graphael is a framework for rapidly building GraphQL API Servers.
Usage
Create a new project directory, and add the following line to your composer.json
in the require
section:
"require": { "linkorb/graphael": "^1.0" }
Create a public/
directory, with an index.php
file like the following:
<?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();
Application configuration
The server is being instantiated with a $config
array that contains the following configuration required options:
environment_prefix
: Prefix of your environment config variablestype_path
: Directory to scan for Type class filestype_namespace
: Namespace of your Type classes. Should match PSR 4 namespace in yourcomposer.json
type_postfix
: Postfix of your type classes. Defaults toType
.
And following optional:
jwt_username_claim
: Claim in JWT that will be used to get username (default:'username'
)jwt_roles_claim
: Claim in JWT for user roles (default:'roles'
)jwt_default_role
: Default user role in case of absenceroles
claim (default:'AUTHENTICATED'
)
Environment configuration
Create a .env
file (or use other means to configure your application's environment variables).
Each variable is prefixed with the environment_prefix
defined earlier, in this example MY_API_
:
MY_API_DEBUG=1 MY_API_PDO_URL=mysql://username:password@localhost/my_db MY_API_JWT_KEY=supersecret
Supported environment variables:
DEBUG
: Set to1
to run the app in debug modePDO_URL
: Connection string to your database. Supports all PDO backendsJWT_KEY
: Optional. If defined, the API only allows connections with JWTs signed with this key. Can be a string value or an absolute path to a public key file.
Authentication
If the JWT_KEY
environment variable is defined, the server checks for a JWT in one of two places:
- A
jwt
query parameter (i.e./graphql?jwt=abc.def.ghi
) - A
Authorization
HTTP header (i.e.Authorization: Bearer abc.def.ghi
)