 |
|
| |
GraphQL::Execution(3) |
User Contributed Perl Documentation |
GraphQL::Execution(3) |
GraphQL::Execution - Execute GraphQL queries
use GraphQL::Execution qw(execute);
my $result = execute($schema, $doc, $root_value);
Executes a GraphQL query, returns results.
my $result = execute(
$schema,
$doc, # can also be AST
$root_value,
$context_value,
$variable_values,
$operation_name,
$field_resolver,
$promise_code,
);
- $schema
- A GraphQL::Schema.
- $doc
- Either a GraphQL query document to be fed in to "parse" in
GraphQL::Language::Parser, or a return value from that.
- $root_value
- A root value that can be used by field-resolvers. The default one needs a
code-ref, a hash-ref or an object.
For instance:
my $schema = GraphQL::Schema->from_doc(<<'EOF');
type Query { dateTimeNow: String, hi: String }
EOF
my $root_value = {
dateTimeNow => sub { DateTime->now->ymd },
hi => "Bob",
};
my $data = execute($schema, "{ dateTimeNow hi }", $root_value);
will return:
{
data => {
dateTimeNow => { ymd => '20190501' },
hi => 'Bob',
}
}
Be aware that with the default field-resolver, when it calls a
method, that method will get called with "$args" in
GraphQL::Type::Library "$context" in GraphQL::Type::Library,
"$info" in GraphQL::Type::Library. To override that to pass no
parameters, this is suitable as a
$field_resolver parameters:
sub {
my ($root_value, $args, $context, $info) = @_;
my $field_name = $info->{field_name};
my $property = ref($root_value) eq 'HASH'
? $root_value->{$field_name}
: $root_value;
return $property->($args, $context, $info) if ref $property eq 'CODE';
return $root_value->$field_name if ref $property; # no args
$property;
}
- $context_value
- A per-request scalar, that will be passed to field-resolvers.
- $variable_values
- A hash-ref, typically the decoded JSON object supplied by a client. E.g.
for this query:
query q($input: TestInputObject) {
fieldWithObjectInput(input: $input)
}
The $variable_values will need to be a
JSON object with a key "input", whose
value will need to conform to the input type
"TestInputObject".
The purpose of this is to avoid needing to hard-code input
values in your query. This aids in, among other things, being able to
whitelist individual queries as acceptable, non-abusive queries to your
system; and being able to generate client-side code for client-side
validation rather than including the full GraphQL system in client
code.
- $operation_name
- A string (or "undef") that if given will
be the name of one of the operations in the query.
- $field_resolver
- A code-ref to be used instead of the default field-resolver.
- $promise_code
- If you need to return a promise, supply a hash-ref matching
"PromiseCode" in GraphQL::Type::Library.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc.
|