2017 © Pedro Peláez
 

application graphael

Graphael: GraphQL Server builder

image

linkorb/graphael

Graphael: GraphQL Server builder

  • Monday, May 28, 2018
  • by joostfaassen
  • Repository
  • 2 Watchers
  • 0 Stars
  • 57 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 12 Versions
  • 8 % Grown

The README.md

Graphael

Graphael is a framework for rapidly building GraphQL API Servers., (*1)

Usage

Create a new project directory, and add the following line to your composer.json in the require section:, (*2)

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

Create a public/ directory, with an index.php file like the following:, (*3)

<?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:, (*4)

  • environment_prefix: Prefix of your environment config variables
  • type_path: Directory to scan for Type class files
  • type_namespace: Namespace of your Type classes. Should match PSR 4 namespace in your composer.json
  • type_postfix: Postfix of your type classes. Defaults to Type.

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 absence roles claim (default: 'AUTHENTICATED'), (*5)

Environment configuration

Create a .env file (or use other means to configure your application's environment variables)., (*6)

Each variable is prefixed with the environment_prefix defined earlier, in this example MY_API_:, (*7)

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

Supported environment variables:, (*8)

  • DEBUG: Set to 1 to run the app in debug mode
  • PDO_URL: Connection string to your database. Supports all PDO backends
  • JWT_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:, (*9)

  1. A jwt query parameter (i.e. /graphql?jwt=abc.def.ghi)
  2. A Authorization HTTP header (i.e. Authorization: Bearer abc.def.ghi)

The Versions