GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
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.
2022-03-24 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.