diff --git a/examples/03-server/README.md b/examples/03-server/README.md new file mode 100644 index 0000000..ee36ccb --- /dev/null +++ b/examples/03-server/README.md @@ -0,0 +1,19 @@ +# Hello world +Same example as 01-hello-world, but uses +[Standard Http Server](http://webonyx.github.io/graphql-php/executing-queries/#using-server) +instead of manual parsing of incoming data. + +### Run locally +``` +php -S localhost:8080 ./graphql.php +``` + +### Try query +``` +curl http://localhost:8080 -d '{"query": "query { echo(message: \"Hello World\") }" }' +``` + +### Try mutation +``` +curl http://localhost:8080 -d '{"query": "mutation { sum(x: 2, y: 2) }" }' +``` diff --git a/examples/03-server/graphql.php b/examples/03-server/graphql.php new file mode 100644 index 0000000..0c01195 --- /dev/null +++ b/examples/03-server/graphql.php @@ -0,0 +1,61 @@ + 'Query', + 'fields' => [ + 'echo' => [ + 'type' => Type::string(), + 'args' => [ + 'message' => ['type' => Type::string()], + ], + 'resolve' => function ($root, $args) { + return $root['prefix'] . $args['message']; + } + ], + ], + ]); + + $mutationType = new ObjectType([ + 'name' => 'Calc', + 'fields' => [ + 'sum' => [ + 'type' => Type::int(), + 'args' => [ + 'x' => ['type' => Type::int()], + 'y' => ['type' => Type::int()], + ], + 'resolve' => function ($root, $args) { + return $args['x'] + $args['y']; + }, + ], + ], + ]); + + // See docs on schema options: + // http://webonyx.github.io/graphql-php/type-system/schema/#configuration-options + $schema = new Schema([ + 'query' => $queryType, + 'mutation' => $mutationType, + ]); + + // See docs on server options: + // http://webonyx.github.io/graphql-php/executing-queries/#server-configuration-options + $server = new StandardServer([ + 'schema' => $schema + ]); + + $server->handleRequest(); +} catch (\Exception $e) { + StandardServer::send500Error($e); +}