Hire magento developersand create Custom GraphQL in Magento 2. GraphQL is a query language for API to allow the customers to fetch the required data while the server returns only the required information. GraphQL was introduced in Magento 2.3 to replace REST and SOAP API. GraphQL is used to read data by query and write data to the server through a mutation.

Here we’ll discuss How to Create Custom GraphQL in Magento 2.

Let’s get started:

Steps to Build Custom GraphQL in Magento 2:

Step 1:

Magento Development Company create a “schema. graphics” file inside our extension below.


Now, add the below code

Now, add the below code

Step 2:

After that, we need to create a “CustomGraphql.php” file inside the below folder path of the extension.


And add the below code

And add the below code
And add the below code

You need to test GraphQL Query in Altair GraphQL client chrome extension or test in Postman Software.

GraphQL Compared to REST API

REST API characterizes asset data on the worker; the customer settles on the decision as it were. GraphQL permits customers to transfer a datasheet; worker activities should return a similar data.

The GraphQL worker just requires a single endpoint and precisely reacts to the data mentioned by the customer; rather than having multiple endpoints, every endpoint returns a fixed data structure as in REST.

What’s the GraphQL in Magento?

  • Graphql was presented with Magento version 2.3 as a choice to REST/SOAP API for frontend development.
  • Magento utilizes two sorts of GraphQL operations:
  • Question: used to understand data
  • Change: used to compose data to the worker
  • As of version 2.3.4, the accompanying center modules are utilizing GraphQL inquiry language:
  • CatalogInventoryGraphQl
  • CatalogUrlRewriteGraphQl
  • BundleGraphQl
  • CatalogGraphQl
  • ConfigurableProductGraphQl
  • CustomerGraphQl
  • DownloadableGraphQl
  • EavGraphQl
  • GroupedProductGraphQl
  • TaxGraphQl
  • ThemeGraphQl
  • UrlRewriteGraphQl
  • WeeeGraphQl
Hire Magento Developer India

Model: Getting Customer Data Utilizing GraphQl

In this model, we’ll make a simple GraphQL API inquiry to bring customer data by means of their email.

Stage 1: Create your Module

We should call our module Magenest/GraphQl. Our module should be stacked after GraphQL and Customer module so that the module.xml file would resemble this:

Create your Module

Step 2: Define Schema

GraphQL queries are declared under vendor/module/etc/schema.graphqls:

Define Schema
  • “type Query”: declares Query operations of our module
  • “testcustomer”: name of our query
  • email: String: declares input name (’email’) and type (‘string’)
  • Test customer: defines the identity of the query, including resolver (@resolver) class, document (@doc), is the result cacheable (@cache), etc.
  • Here we have defined “cacheable: false”, meaning the result will not be cached. If the result can be cached, use @cache tag and define a caching class instead.
  • “type Test customer”: define the result object of the query, including their name and type

Read More: Best Practices for Magento 2 Custom Theme Development

Step 3: Create Resolver Class for the Schemain Magento 2

Magento development Servicesreturn data of customers with the requested email.


Create Resolver Class for the Schemain Magento 2
Create Resolver Class for the Schemain Magento 2
Create Resolver Class for the Schemain Magento 2
Create Resolver Class for the Schemain Magento 2

Couple of things to note:

  • Resolver class must implement Magento\Framework\GraphQl\Query\ResolverInterface
  • “resolve” is the main method of this class, with $args as the query’s input
  • GraphQL has several exception classes, including GraphQlAuthorizationException and GraphQlNoSuchEntityException. These must be used to return the error to the client


For testing hire dedicated magento developers or you can check GraphQL query and response by installing a Chrome extension called “ChromeiQL”. Then, set the endpoint as “<your Magento root url>/graphql”. After that, input your GraphQL query on the left side of “ChromeiQL” interface and click on the “Set endpoint” button.