Calling GraphQL

GraphQL operates over HTTP, you can use any language, client library, or tool to fetch GraphQL data so long as you format the HTTP request properly.

cURL

Command line tool and library for transferring data with URLs

curl -X POST -H "Content-Type: application/json" \
  --data '{ "query": "{ myProfile { id program { name }}}" }' \
  -H "Authorization: Bearer {TOKEN}" \
  https://production.suggestic.com/graphql

Fetch

Fetch module will enable you to use fetch in your Node code in a cross-browser compliant fashion. The Fetch API is part of the Web platform API defined by the standards bodies WHATWG and W3C.

require("isomorphic-fetch");

fetch("https://production.suggestic.com/graphql", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer {TOKEN}",
  },
  body: JSON.stringify({
    query: `
      {
        myProfile {
          id
          program {
            name
          }
        }
      }`,
  }),
})
  .then((res) => res.json())
  .then((res) => console.log(res.data));

Apollo Client

Apollo Client is a comprehensive state management library for JavaScript that enables you to manage both local and remote data with GraphQL. Use it to fetch, cache, and modify application data, all while automatically updating your UI.

import React from "react";
import { gql, useQuery } from "@apollo/client";

const MY_PROFILE = gql`
  {
    myProfile {
      id
      program {
        name
      }
    }
  }
`;

export const Profile = () => {
  const { loading, error, data } = useQuery(MY_PROFILE);

  if (loading) return "Loading...";
  if (error) return `Error! ${error.message}`;

  return <div>{data.myProfile.program.name}</div>;
};

PHP curl

<?php
$token = 'TOKEN';

// https://docs.suggestic.com/graphql/query/mutations/user-profile/new-user
$query = <<<'GQL'
mutation createUser($name: String!, $email: String!) {
  createUser(name: $name, email: $email) {
    success
    message
    user {
      id
    }
  }
}
GQL;


$variables = array(
    'name' => 'Ernesto',
    'email' => 'ernesto+00012@suggestic.com'
);

$json = json_encode(['query' => $query, 'variables' => $variables]);

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://production.suggestic.com/graphql',
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $json,
    CURLOPT_HTTPHEADER => array(
        'Authorization: Token ' . $token,
        'Content-Type: application/json',
    ) ,
));

$response = curl_exec($curl);
$result = curl_close($curl);
echo $result;

Last updated