REST to GraphQL

Examples of how to use Bi-direct to make REST API calls to a server that only supports GraphQL queries.

Bi-Direct endpoint for REST to SOAP: https://tri-way.vercel.app/resttographql

Just like a REST to SOAP API call if you want to pass any data and the required data in the request body, you need to include a JSON object with the following keys:

  • Url: The endpoint URL of the REST API you want to use

  • Data (not optional in this case): The query you want to make

Example of a Query request

Normally this is how a GraphQL query looks like

You can try to make the same query to the given GraphQL server:

https://rickandmortyapi.graphcdn.app/

{
  characters(page: 1) {
    results {
      name
      id
    }
  }
}
Output for the above-given GraphQL query will look something like this
{
  "data": {
    "characters": {
      "results": [
        {
          "name": "Rick Sanchez",
          "id": "1"
        },
        {
          "name": "Morty Smith",
          "id": "2"
        },
        {
          "name": "Summer Smith",
          "id": "3"
        },
        {
          "name": "Beth Smith",
          "id": "4"
        },
        {
          "name": "Jerry Smith",
          "id": "5"
        },
        {
          "name": "Abadango Cluster Princess",
          "id": "6"
        },
        {
          "name": "Abradolf Lincler",
          "id": "7"
        },
        {
          "name": "Adjudicator Rick",
          "id": "8"
        },
        {
          "name": "Agency Director",
          "id": "9"
        },
        {
          "name": "Alan Rails",
          "id": "10"
        },
        {
          "name": "Albert Einstein",
          "id": "11"
        },
        {
          "name": "Alexander",
          "id": "12"
        },
        {
          "name": "Alien Googah",
          "id": "13"
        },
        {
          "name": "Alien Morty",
          "id": "14"
        },
        {
          "name": "Alien Rick",
          "id": "15"
        },
        {
          "name": "Amish Cyborg",
          "id": "16"
        },
        {
          "name": "Annie",
          "id": "17"
        },
        {
          "name": "Antenna Morty",
          "id": "18"
        },
        {
          "name": "Antenna Rick",
          "id": "19"
        },
        {
          "name": "Ants in my Eyes Johnson",
          "id": "20"
        }
      ]
    }
  }
}

Example of a query made using Bi-Direct

Headers

headers: {
    'Content-Type': 'application/json'
  }

Request Body

{
  "Url": "https://rickandmortyapi.graphcdn.app/",
  "Data": "query { characters(page:1){    results {      name       }      }}"
}
Generated output for the given query
{
  "characters": {
    "results": [
      {
        "name": "Rick Sanchez"
      },
      {
        "name": "Morty Smith"
      },
      {
        "name": "Summer Smith"
      },
      {
        "name": "Beth Smith"
      },
      {
        "name": "Jerry Smith"
      },
      {
        "name": "Abadango Cluster Princess"
      },
      {
        "name": "Abradolf Lincler"
      },
      {
        "name": "Adjudicator Rick"
      },
      {
        "name": "Agency Director"
      },
      {
        "name": "Alan Rails"
      },
      {
        "name": "Albert Einstein"
      },
      {
        "name": "Alexander"
      },
      {
        "name": "Alien Googah"
      },
      {
        "name": "Alien Morty"
      },
      {
        "name": "Alien Rick"
      },
      {
        "name": "Amish Cyborg"
      },
      {
        "name": "Annie"
      },
      {
        "name": "Antenna Morty"
      },
      {
        "name": "Antenna Rick"
      },
      {
        "name": "Ants in my Eyes Johnson"
      }
    ]
  }
}
Javascript code (Axios)
let headersList = {
  "Content-Type": "application/json"
 }
 
 let bodyContent = JSON.stringify({
  "Url": "https://rickandmortyapi.graphcdn.app/",
  "Data": "query { characters(page:1){    results {      name       }      }}"
});

async function makeRequest() { 
 let response = await fetch("https://tri-way.vercel.app/resttographql", { 
   method: "POST",
   body: bodyContent,
   headers: headersList
 });
 
 let data = await response.text();
console.log(data);
}
 
makeRequest()

Last updated