From 199caf3080db9038eaa9464e685d69b59fa1f735 Mon Sep 17 00:00:00 2001 From: Vladimir Razuvaev Date: Sun, 20 Aug 2017 02:33:16 +0700 Subject: [PATCH] New example for server usage --- examples/03-server/README.md | 19 +++++++++++ examples/03-server/graphql.php | 61 ++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 examples/03-server/README.md create mode 100644 examples/03-server/graphql.php 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); +}