📣 GraphQLConf 2025 • Sept 08-10 • Amsterdam • Early bird tickets available & sponsorship opportunities open • Learn more
Sort by:
Altair
An alternative to Postman that supports editing GraphQL queries directly and autoload your GraphQL schema.
Apideck
A GraphQL API to query and mutate data across APIs like Salesforce, HubSpot, Microsoft Dynamics, Pipedrive, and many more.
Apache APISIX
Apache APISIX is a dynamic, real-time, high-performance API gateway providing rich traffic management features such as load balancing, dynamic upstream, canary release, observability, etc. As a cloud-native API gateway, Apache APISIX already can support GraphQL syntax at the beginning of its design. Efficiently matching GraphQL statements carried in requests can filter out abnormal traffic to further ensure security. For more information, please visit How to Use GraphQL with API Gateway Apache APISIX
Apollo Studio
A cloud service that helps you build, validate, monitor and secure your organizations data graph.
AWS AppSync
Fully managed GraphQL service with realtime subscriptions, offline programming & synchronization, and enterprise security features as well as fine grained authorization controls.
Back4App
Fully managed GraphQL backend based on open source Parse Platform. Store and query relational data, run cloud functions and more over GraphQL API. Free to get started.
Banana Cake Pop
A feature-rich GraphQL IDE by ChilliCream that let's you explore, manage, and test your GraphQL APIs. Check it out here.
Dgraph
Dgraph is a native GraphQL database with a graph backend. This means Dgraph is not an interface on top of an existing database like Postgres but is actually designed from the ground-up for GraphQL. It is optimized for speed and performance, depending on multiple computer science breakthroughs to get the best result. Dgraph Cloud is a fully managed GraphQL backend service that lets you iterate faster, without worrying about your infrastructure.
README

Install Steps if running locally on linux not on Dgraph Cloud:

docker pull dgraph/standalone
mkdir -p ~/dgraph
docker run -it -p 5080:5080 -p 6080:6080 -p 8080:8080 \
  -p 9080:9080 -p 8000:8000 -v ~/dgraph:/dgraph --name dgraph \
  dgraph/standalone:master

Set your GraphQL Schema:

touch schema.graphql
nano schema.graphql
type Product {
  id: ID!
  name: String! @id
  reviews: [Review] @hasInverse(field: about)
}
 
type Customer {
  username: String! @id
  reviews: [Review] @hasInverse(field: by)
}
 
type Review {
  id: ID!
  about: Product!
  by: Customer!
  comment: String @search(by: [fulltext])
  rating: Int @search
}
curl -X POST localhost:8080/admin/schema --data-binary '@schema.graphql'

Fire up your favorite GraphQL Client pointed at http://localhost:8080/graphql and run mutations and queries

mutation {
  addProduct(input: [{ name: "Dgraph" }, { name: "Dgraph Cloud" }]) {
    product {
      id
      name
    }
  }
  addCustomer(input: [{ username: "TonyStark" }]) {
    customer {
      username
    }
  }
}
mutation {
  addReview(
    input: [
      {
        by: { username: "TonyStark" }
        about: { name: "Dgraph" }
        comment: "Fantastic, easy to install, worked great. Best GraphQL server available"
        rating: 10
      }
    ]
  ) {
    review {
      id
      comment
      rating
      by {
        username
      }
      about {
        id
        name
      }
    }
  }
}
query {
  queryReview(
    filter: { comment: { alloftext: "server easy install" }, rating: { gt: 5 } }
  ) {
    comment
    by {
      username
      reviews(order: { desc: rating }, first: 10) {
        about {
          name
          reviews(order: { asc: rating }, first: 5) {
            by {
              username
            }
            comment
            rating
          }
        }
        rating
      }
    }
    about {
      name
    }
  }
}
Elide
A Java library that can expose a JPA annotated data model as a GraphQL service over any relational database.
Escape – GraphQL Security
Live GraphQL Security & Compliance. Ensure your GraphQL endpoints are production-ready. During development. Without needed configuration. Supports every language and framework. Free to get started.
FaunaDB
Create an instant GraphQL backend by importing a gql schema. The database will create relations and indexes for you, so you'll be ready to query in seconds, without writing any database code. Serverless pricing, free to get started.
Grafbase
Grafbase provides secure self-hosted deployment options for GraphQL Federation, unmatched query speed, advanced governance, and unified data access for reliable, enterprise-grade API management. Learn more about scaling GraphQL Federation with Grafbase.
graphapi®
graphapi® is a secure low-code GraphQL-as-a-service platform. Based on the input data model, it auto-generates the GraphQL schema, all resolvers, and the database stack. Additionally, it provides a user interface allowing teams to manage their data. For more information, go to https://graphapi.com.
GraphQL.Security
Fast and free security scan to run a dozen of tests on a GraphQL endpoint. No login is required.
Hasura
Hasura connects to your databases & microservices and instantly gives you a production-ready GraphQL API.
Hive
Hive is a fully open-source schema registry, analytics and gateway for GraphQL federation and other GraphQL APIs.
Hygraph
Hygraph is the federated content platform that allows true composability of your stack. Integrate all your services with a unique content federation approach and distribute content from anywhere - to anywhere using a single, powerful GraphQL API.
Insomnia
Insomnia is an open-source, cross-platform API Client for GraphQL, REST, and gRPC. Insomnia combines an easy-to-use interface with advanced functionality like authentication helpers, code generation, and environment variables.
LexasCMS
A headless CMS (Content Management System) that combines powerful content personalisation and scheduling capabilities with a modern content editing experience and a blazing fast GraphQL/REST content delivery API.
Moesif API Analytics
A GraphQL analaytics and monitoring Service to find functional and performance issues.
Postman
A robust multi-protocol API client with features like API scripting, automation, collaborative workspaces, and comprehensive support for testing and developing GraphQL APIs.
StepZen
Create a serverless GraphQL API based on your data sources (REST & Databases), Third-Party APIs, or any combination. Instead of writing a GraphQL server yourself, you can define everything declaratively by writing GraphQL schemas. For more information, go to https://www.stepzen.com/.
Tyk
Tyk is a lightweight Open Source API Management Gateway that has built a Full API Life-Cycle Management around GraphQL with its own GraphQL engine that is written in Golang. Tyk supports schema stitching of multiple GraphQL and/or REST APIs through Universal Data Graph (UDG) as well as GraphQL Federation and GraphQL Subscription.
Typetta
Typetta is an open-source ORM written in TypeScript that aims to allow seamless access to data in a typed fashion to all main SQL databases (MySQL, PostgreSQL, Microsoft SQL Server, SQLLite3, CockroachDB, MariaDB, Oracle & Amazon Redshift) and also to the NoSQL database MongoDB.
Webiny
Webiny allows you to quickly build GraphQL APIs on top of AWS Lambda and DynamoDB with built-in scaffolds. Webiny also includes a ready-made headless GraphQL CMS for a no-code experience.
ballerina-graphql
The Ballerina Standard Library Package for consume GraphQL services.
README

To run a ballerina-graphql client:

  • Download and install Ballerina Language
  • Then run bal run graphql_client.bal to run the service, with this code in the graphql_client.bal file:
import ballerina/graphql;
import ballerina/io;
 
type Response record {
    record { string hello; } data;
};
 
public function main() returns error? {
    graphql:Client helloClient = check new ("localhost:9090/graphql");
    string document = "{ hello }";
    Response response = check helloClient->execute(document);
    io:println(response.data.hello);
}
Features
  • Dependently-typed response retrieval with Ballerina type inferring
  • Custom client generation support
ballerina-graphql
The Ballerina Standard Library Package for write GraphQL services.
README

To run a ballerina-graphql hello world server:

  • Download and install Ballerina Language
  • Then run bal run graphql_service.bal to run the service, with this code in the graphql_service.bal file:
import ballerina/graphql;
 
service /graphql on new graphql:Listener(9090) {
    resource function get hello() returns string {
        return "Hello, world!";
    }
}
Features
  • Built with Ballerina service and listener model, which are first-class citizens in Ballerina
  • Supports subscriptions over websocket (No additional libraries needed)
  • Supports file upload
  • Built-in GraphiQL client
libgraphqlparser
A GraphQL query language parser in C++ with C and C++ APIs.
GraphQL.Client
A GraphQL Client for .NET.
graphql-net-client
Basic example GraphQL client for .NET.
Linq2GraphQL
A straightforward Linq to GraphQL Client
README

Linq2GraphQL generates C# classes from the GraphQL schema and and togheter with the nuget package Linq2GraphQL.Client it makes it possible to query the server using Linq expressions.

A simple query that will get the first 10 orders with the primitive properties of orders and the connected customer

var orders = await sampleClient
    .Query
        .Orders(first: 10)
        .Include(e => e.Orders.Select(e => e.Customer))
        .Select(e => e.Orders)
        .ExecuteAsync();

An example mutation where we add a new customer and return the Customer Id.

 var customerId = await sampleClient
     .Mutation
     .AddCustomer(new CustomerInput
     {
         CustomerId = Guid.NewGuid(),
         CustomerName = "New Customer",
         Status = CustomerStatus.Active
     })
     .Select(e=> e.CustomerId)
     .ExecuteAsync();
SAHB.GraphQLClient
GraphQL client which supports generating queries from C# classes
Strawberry Shake
Strawberry Shake is a open-source reactive GraphQL client for .NET
README

Strawberry Shake removes the complexity of state management and lets you interact with local and remote data through GraphQL.

You can use Strawberry Shake to:

  • Generate a C# client from your GraphQL queries.
  • Interact with local and remote data through GraphQL.
  • Use reactive APIs to interact with your state.
client.GetHero
    .Watch(ExecutionStrategy.CacheFirst)
    .Subscribe(result =>
    {
        Console.WriteLine(result.Data.Name);
    })
ZeroQL
ZeroQL is a open-source GraphQL client for C#
README

The ZeroQL is a high-performance C#-friendly GraphQL client. It supports Linq-like syntax, and doesn’t require Reflection.Emit or expressions. As a result, at runtime provides performance very close to a raw HTTP call.

You can use ZeroQL to:

  • Generate a C# client from GraphQL schema.
  • Generate and execute graphql queries from your C# code.
  • Don’t require writing GraphQL manually.
  • Supports .Net Core, .Net Framework, Xamarin, Unity apps.
var userId = 10;
var response = await qlClient.Query(q => q
    .User(userId, o => new
    {
        o.Id,
        o.FirstName,
        o.LastName
    }));
Entity GraphQL
A GraphQL library for .NET Core. Easily expose you data model as a GraphQL API or bring together multiple data sources into a single GraphQL schema.
README
// expose an existing data model with ASP.NET & EF Core
public class Startup {
  public void ConfigureServices(IServiceCollection services)
  {
      services.AddDbContext<DemoContext>();
      // Auto build a schema from DemoContext. Alternatively you can build one from scratch
      services.AddGraphQLSchema<DemoContext>(options =>
      {
          // modify the schema (add/remove fields or types), add other services
      });
  }
 
  public void Configure(IApplicationBuilder app, DemoContext db)
  {
      app.UseRouting();
      app.UseEndpoints(endpoints =>
      {
          // defaults to /graphql endpoint
          endpoints.MapGraphQL<DemoContext>();
      });
  }
}
graphql-dotnet
GraphQL for .NET
README
using System;
using System.Threading.Tasks;
using GraphQL;
using GraphQL.Types;
using GraphQL.SystemTextJson; // First add PackageReference to GraphQL.SystemTextJson
 
public class Program
{
  public static async Task Main(string[] args)
  {
    var schema = Schema.For(@"
      type Query {
        hello: String
      }
    ");
 
    var json = await schema.ExecuteAsync(_ =>
    {
      _.Query = "{ hello }";
      _.Root = new { Hello = "Hello World!" };
    });
 
    Console.WriteLine(json);
  }
}
graphql-net
Convert GraphQL to IQueryable
Hot Chocolate
Hot Chocolate is an open-source GraphQL Server for .NET
README

Hot Chocolate takes the complexity away from building a fully-fledged GraphQL server and lets you focus on delivering the next big thing.

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
 
WebHost
    .CreateDefaultBuilder(args)
    .ConfigureServices(services =>
        services
            .AddGraphQLServer()
            .AddQueryType<Query>())
    .Configure(builder =>
        builder
            .UseRouting()
            .UseEndpoints(e => e.MapGraphQL()))
    .Build()
    .Run();
 
public class Query
{
    public Hero GetHero() => new Hero();
}
 
public class Hero
{
    public string Name => "Luke Skywalker";
}
NGraphQL
A set of packages for implementing high-performant GraphQL servers in .NET. Faithful implementation of official 2018 Specification. Features batched execution support (aka Data Loader); support for custom scalars; HTTP server based on ASP.NET Core; parsed query cache; modular API construction (equivalent of schema stiching); full introspection support; runtime metrics and quotas.
regraph
A GraphQL client implemented in Clojurescript with support for websockets.
alumbra
A set of reusable GraphQL components for Clojure conforming to the data structures given in alumbra.spec.
README
(require '[alumbra.core :as alumbra]
         '[claro.data :as data])
 
(def schema
  "type Person { name: String!, friends: [Person!]! }
   type QueryRoot { person(id: ID!): Person, me: Person! }
   schema { query: QueryRoot }")
 
(defrecord Person [id]
  data/Resolvable
  (resolve! [_ _]
    {:name    (str "Person #" id)
     :friends (map ->Person  (range (inc id) (+ id 3)))}))
 
(def QueryRoot
  {:person (map->Person {})
   :me     (map->Person {:id 0})})
 
(def app
  (alumbra/handler
    {:schema schema
     :query  QueryRoot}))
 
(defonce my-graphql-server
  (aleph.http/start-server #'app {:port 3000}))
$ curl -XPOST "http://0:3000" -H'Content-Type: application/json' -d'{
  "query": "{ me { name, friends { name } } }"
}'
{"data":{"me":{"name":"Person #0","friends":[{"name":"Person #1"},{"name":"Person #2"}]}}}
graphql-clj
A Clojure library that provides a GraphQL implementation.
README

Code that executes a hello world GraphQL query with graphql-clj:

(def schema "type QueryRoot {
    hello: String
  }")
 
(defn resolver-fn [type-name field-name]
  (get-in {"QueryRoot" {"hello" (fn [context parent & rest]
                              "Hello world!")}}
          [type-name field-name]))
 
(require '[graphql-clj.executor :as executor])
 
(executor/execute nil schema resolver-fn "{ hello }")
lacinia
A full implementation of the GraphQL specification that aims to maintain external compliance with the specification.
graphqld
A GraphQL implementation for the D Programming Language.
common_graphql_client
Elixir GraphQL Client with HTTP and WebSocket support
Neuron
A GraphQL client for Elixir
absinthe
GraphQL implementation for Elixir.
graphql-elixir
An Elixir implementation of Facebook's GraphQL.
dillonkearns/elm-graphql
Library and command-line code generator to create type-safe Elm code for a GraphQL endpoint.
graphql-erlang
GraphQL implementation in Erlang.
Ferry
Ferry is a simple, powerful GraphQL Client for Flutter and Dart.
graphql
A GraphQL client implementation in Flutter.
genqlient
A truly type-safe Go GraphQL client.
README

genqlient is a Go library to easily generate type-safe code to query a GraphQL API. It takes advantage of the fact that both GraphQL and Go are typed languages to ensure at compile-time that your code is making a valid GraphQL query and using the result correctly, all with a minimum of boilerplate.

genqlient provides:

  • Compile-time validation of GraphQL queries: never ship an invalid GraphQL query again!
  • Type-safe response objects: genqlient generates the right type for each query, so you know the response will unmarshal correctly and never need to use interface{}.
  • Production-readiness: genqlient is used in production at Khan Academy, where it supports millions of learners and teachers around the world.
go-graphql-client
A GraphQL Go client with Mutation, Query and Subscription support.
graphql
A GraphQL client implementation in Go.
machinebox/graphql
An elegant low-level HTTP client for GraphQL.
99designs/gqlgen
Go generate based graphql server library.
EGGQL
Easy to use, complete Go implementation of GraphQL. Simple and schema-less.
README

The purpose of Eggql is to make it as simple as possible to create a GraphQL server. You don’t need to create GraphQL schema (though you can view the schema that is created if interested). It is currently in beta release but is a complete implementation of a GraphQL server apart from subscriptions.

Just to be clear it supports all of these GraphQL features: arguments (including defaults), objects/lists/enums/input/interface/union types, aliases, fragments, variables, directives, mutations, inline fragments, descriptions, introspection and custom scalars.

Tests (jMeter) show that it is as fast or faster than other Go implementations for simple queries. We’re working on enhancements for performance including caching, data-loader, complexity-limits, etc.

To run an eggql hello world server just build and run this Go program:

package main

import "github.com/andrewwphillips/eggql"

func main() {
	http.Handle("/graphql", eggql.New(struct{ Message string }{Message: "hello, world"}))
	http.ListenAndServe(":80", nil)
}

This creates a root Query object with a single message field. To test it send a query with curl:

$ curl -XPOST -d '{"query": "{ message }"}' localhost:80/graphql

and you will get this response:

{
  "data": {
    "message": "hello, world"
  }
}
appointy/jaal
Develop spec compliant GraphQL servers in Go.
graph-gophers/graphql-go
GraphQL server with a focus on ease of use.
graphql-go
An implementation of GraphQL for Go / Golang.
graphql-relay-go
A Go/Golang library to help construct a graphql-go server supporting react-relay.
samsarahq/thunder
A GraphQL implementation with easy schema building, live queries, and batching.
graphql-go-tools
A collection of tools for building GraphQL Servers, Gateways, Proxy Servers and Middleware in Go.
README

graphql-go-tools implements all basic blocks for building GraphQL Servers, Gateways and Proxy Servers. From lexing, parsing, validation, normalization, all the way up to query planning and execution.

It can also be understood as a GraphQL Compiler, with the ability to add your own backends. Just by implementing a few interfaces, you’re able to teach the compiler how to talk GraphQL to any backend.

The following backends are already implemented: GraphQL, with support for Apollo Federation / Supergraph. Databases: PostgreSQL, MySQL, SQLite, CockroachDB, MongoDB, SQLServer, OpenAPI / REST and Kafka.

To get a sense on how to implement a new backend, check out the Static Data Source, as it’s the simplest one.

It’s used in production by many enterprises for multiple years now, battle tested and actively maintained.

graphjin
An instant GraphQL to SQL compiler. Use as a standalone service or a Go library. Formerly super-graph.
gorm-graphql
An automatic GraphQL schema generator for GORM
README

Core Library - The GORM GraphQL library provides functionality to generate a GraphQL schema based on your GORM entities. In addition to mapping domain classes to a GraphQL schema, the core library also provides default implementations of “data fetchers” to query, update, and delete data through executions of the schema.

Grails Plugin - In a addition to the Core Library, the GORM GraphQL Grails Plugin:

  • Provides a controller to receive and respond to GraphQL requests through HTTP, based on their guidelines.

  • Generates the schema at startup with spring bean configuration to make it easy to extend.

  • Includes a GraphiQL browser enabled by default in development. The browser is accessible at /graphql/browser.

  • Overrides the default data binder to use the data binding provided by Grails

  • Provides a trait to make integration testing of your GraphQL endpoints easier

See the documentation for more information.

GQL
GQL is a Groove library for GraphQL
morpheus-graphql-client
A strongly-typed GraphQL client implementation in Haksell.
graphql-w-persistent
Complete set of library tools to abstract relational database schemas with SQL, query with GraphQL, and return GraphQL results
README

One time setup: build schema, deploy as microservice or within server, query SQL database with GraphQL!

Morpheus GraphQL
A Haskell library for building GraphQL APIs.
README

Hello world example with morpheus-graphql:

# schema.gql
"""
A supernatural being considered divine and sacred
"""
type Deity {
  name: String!
  power: String @deprecated(reason: "no more supported")
}
type Query {
  deity(name: String! = "Morpheus"): Deity!
}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module API (api) where
import Data.ByteString.Lazy.Char8 (ByteString)
import Data.Morpheus (interpreter)
import Data.Morpheus.Document (importGQLDocument)
import Data.Morpheus.Types (RootResolver (..), Undefined (..))
import Data.Text (Text)
importGQLDocument "schema.gql"
rootResolver :: RootResolver IO () Query Undefined Undefined
rootResolver =
  RootResolver
    { queryResolver = Query {deity},
      mutationResolver = Undefined,
      subscriptionResolver = Undefined
    }
  where
    deity DeityArgs {name} =
      pure
        Deity
          { name = pure name,
            power = pure (Just "Shapeshifting")
          }
api :: ByteString -> IO ByteString
api = interpreter rootResolver

See morpheus-graphql-examples for more sophisticated APIs.

Mu-Haskell with Mu-GraphQL
A Haskell library for building microservices (gRPC, HTTP) and GraphQL APIs.
README

Example implementation of a GraphQL server with type-level representation of the schema auto-generated:

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PartialTypeSignatures #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
 
-- imports omitted for brevity...
 
graphql "Library" "library.graphql" -- all the magic happens here! 🪄🎩
 
-- ... a bit more code...
 
libraryServer :: SqlBackend -> ServerT ObjectMapping i Library ServerErrorIO _
libraryServer conn =
  resolver
    ( object @"Book"
        ( field @"id" bookId,
          field @"title" bookTitle,
          field @"author" bookAuthor,
          field @"imageUrl" bookImage
        ),
      object @"Author"
        ( field @"id" authorId,
          field @"name" authorName,
          field @"books" authorBooks
        ),
      object @"Query"
        ( method @"authors" allAuthors,
          method @"books" allBooks
        ),
      object @"Mutation"
        ( method @"newAuthor" newAuthor,
          method @"newBook" newBook
        ),
      object @"Subscription"
        (method @"allBooks" allBooksConduit)
    )
  where
    bookId :: Entity Book -> ServerErrorIO Integer
    bookId (Entity (BookKey k) _) = pure $ toInteger k
    -- ... more resolvers...

See our docs for more information about how to build your own GraphQL server and the library example for a more end-to-end example that includes a client written in Elm!

Apollo Kotlin
A strongly-typed, caching GraphQL client for the JVM, Android, and Kotlin multiplatform.
README

Apollo Kotlin (formerly known as Apollo Android) is a GraphQL client with support for Android, Java8+, iOS and Kotlin multiplatform in general. It features:

  • Java and Kotlin Multiplatform code generation
  • Queries, Mutations and Subscriptions
  • Reflection-free parsing
  • Normalized cache
  • Custom scalar types
  • HTTP cache
  • Auto Persisted Queries
  • Query batching
  • File uploads
  • Espresso IdlingResource
  • Fake models for tests
  • AppSync and graphql-ws websockets
  • GraphQL AST parser
graphql-kotlin
A set of libraries for running GraphQL client and server in Kotlin.
README

GraphQL Kotlin provides a set of lightweight type-safe GraphQL HTTP clients. The library provides Ktor HTTP client and Spring WebClient based reference implementations as well as allows for custom implementations using other engines. Jackson and kotlinx-serialization type-safe data models are generated at build time by the provided Gradle and Maven plugins.

To generate Jackson models that will be used with GraphQL Kotlin Spring WebClient, add following to your Gradle build file:

// build.gradle.kts
import com.expediagroup.graphql.plugin.gradle.graphql
 
plugins {
    id("com.expediagroup.graphql") version $latestGraphQLKotlinVersion
}
 
dependencies {
  implementation("com.expediagroup:graphql-kotlin-spring-client:$latestGraphQLKotlinVersion")
}
 
graphql {
    client {
        // target GraphQL endpoint
        endpoint = "http://localhost:8080/graphql"
        // package for generated client code
        packageName = "com.example.generated"
    }
}

By default, GraphQL Kotlin plugins will look for query files under src/main/resources. Given HelloWorldQuery.graphql sample query:

query HelloWorldQuery {
  helloWorld
}

Plugin will generate classes that are simple POJOs implementing GraphQLClientRequest interface and represent a GraphQL request.

package com.example.generated
 
import com.expediagroup.graphql.client.types.GraphQLClientRequest
import kotlin.String
import kotlin.reflect.KClass
 
const val HELLO_WORLD_QUERY: String = "query HelloWorldQuery {\n    helloWorld\n}"
 
class HelloWorldQuery: GraphQLClientRequest<HelloWorldQuery.Result> {
    override val query: String = HELLO_WORLD_QUERY
 
    override val operationName: String = "HelloWorldQuery"
 
    override fun responseType(): KClass<HelloWorldQuery.Result> = HelloWorldQuery.Result::class
 
    data class Result(
        val helloWorld: String
    }
}

We can then execute our queries using target client.

package com.example.client
 
import com.expediagroup.graphql.client.spring.GraphQLWebClient
import com.expediagroup.graphql.generated.HelloWorldQuery
import kotlinx.coroutines.runBlocking
 
fun main() {
    val client = GraphQLWebClient(url = "http://localhost:8080/graphql")
    runBlocking {
        val helloWorldQuery = HelloWorldQuery()
        val result = client.execute(helloWorldQuery)
        println("hello world query result: ${result.data?.helloWorld}")
    }
}

See graphql-kotlin client docs for additional details.

Nodes
A GraphQL JVM Client designed for constructing queries from standard model definitions. By American Express.
graphql-calculator
A lightweight graphql calculation engine.
README

GraphQL Calculator is a lightweight graphql calculation engine, which is used to alter execution behavior of graphql query.

Here are some examples on how to use GraphQL Calculator on graphql query.

query basicMapValue($userIds: [Int]) {
  userInfoList(userIds: $userIds) {
    id
    age
    firstName
    lastName
    fullName: stringHolder @map(mapper: "firstName + lastName")
  }
}
 
query filterUserByAge($userId: [Int]) {
  userInfoList(userIds: $userId) @filter(predicate: "age>=18") {
    userId
    age
    firstName
    lastName
  }
}
 
query parseFetchedValueToAnotherFieldArgumentMap($itemIds: [Int]) {
  itemList(itemIds: $itemIds) {
    # save sellerId as List<Long> with unique name "sellerIdList"
    sellerId @fetchSource(name: "sellerIdList")
    name
    saleAmount
    salePrice
  }
 
  userInfoList(userIds: 1)
    # transform the argument of "userInfoList" named "userIds" according to expression "sellerIdList" and expression argument,
    # which mean replace userIds value by source named "sellerIdList"
    @argumentTransform(
      argumentName: "userIds"
      operateType: MAP
      expression: "sellerIdList"
      dependencySources: ["sellerIdList"]
    ) {
    userId
    name
    age
  }
}

See graphql-calculator README for more information.

GraphQL Spring Boot
GraphQL Spring Boot from GraphQL Java Kickstart
README

The GraphQL Spring Boot turns any Spring Boot application into a GraphQL Server

Started includes features such as:

See GraphQL Java Kickstart Getting Started for how to get started.

graphql-java
A Java library for building GraphQL APIs.
README

See the Getting Started tutorial on the GraphQL Java website.

Code that executes a hello world GraphQL query with graphql-java:

import graphql.ExecutionResult;
import graphql.GraphQL;
import graphql.schema.GraphQLSchema;
import graphql.schema.StaticDataFetcher;
import graphql.schema.idl.RuntimeWiring;
import graphql.schema.idl.SchemaGenerator;
import graphql.schema.idl.SchemaParser;
import graphql.schema.idl.TypeDefinitionRegistry;
 
import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring;
 
public class HelloWorld {
 
    public static void main(String[] args) {
        String schema = "type Query{hello: String}";
 
        SchemaParser schemaParser = new SchemaParser();
        TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema);
 
        RuntimeWiring runtimeWiring = newRuntimeWiring()
                .type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("world")))
                .build();
 
        SchemaGenerator schemaGenerator = new SchemaGenerator();
        GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring);
 
        GraphQL build = GraphQL.newGraphQL(graphQLSchema).build();
        ExecutionResult executionResult = build.execute("{hello}");
 
        System.out.println(executionResult.getData().toString());
        // Prints: {hello=world}
    }
}

See the graphql-java docs for further information.

graphql-kotlin
A set of libraries for running GraphQL client and server in Kotlin.
README

GraphQL Kotlin follows a code first approach for generating your GraphQL schemas. Given the similarities between Kotlin and GraphQL, such as the ability to define nullable/non-nullable types, a schema can be generated from Kotlin code without any separate schema specification. To create a reactive GraphQL web server add following dependency to your Gradle build file:

// build.gradle.kts
implementation("com.expediagroup", "graphql-kotlin-spring-server", latestVersion)

We also need to provide a list of supported packages that can be scanned for exposing your schema objects through reflections. Add following configuration to your application.yml file:

graphql:
  packages:
    - "com.your.package"

With the above configuration we can now create our schema. In order to expose your queries, mutations and/or subscriptions in the GraphQL schema you simply need to implement corresponding marker interface and they will be automatically picked up by graphql-kotlin-spring-server auto-configuration library.

@Component
class HelloWorldQuery : Query {
  fun helloWorld() = "Hello World!!!"
}

This will result in a reactive GraphQL web application with following schema:

type Query {
  helloWorld: String!
}

See graphql-kotlin docs for additial details.

Jimmer
A revolutionary ORM framework for both java and kotlin, it also provides specialized API for rapid development of Spring GraphQL-based applications.
README
Introduce
  1. SpringBoot has introduced Spring GraphQL since 2.7. Jimmer provides specialized API for rapid development of Spring GraphQL-based applications.

  2. Support two APIs: Java API & kotlin API.

  3. Powerful and GraphQL friendly caching support.

  4. Faster than other popular ORM solutions, please see the benchmark: https://babyfish-ct.github.io/jimmer/docs/benchmark/

  5. More powerful than other popular ORM solutions.

    Three aspects should be considered in ORM design:

    a. Query. b. Update. c. Cache.

    Each aspect is aimed at object trees with arbitrary depth rather than simple objects. This distinctive design brings convenience unmatched by other popular solutions.

Links
KGraphQL
KGraphQL is a Kotlin implementation of GraphQL. It provides a rich DSL to set up the GraphQL schema.
README

Here’s an example on how to create a simple schema based on a kotlin data class plus a property resolver that gets applied onto your class.

data class Article(val id: Int, val text: String)
 
fun main() {
    val schema = KGraphQL.schema {
        query("article") {
            resolver { id: Int?, text: String ->
                Article(id ?: -1, text)
            }
        }
        type<Article> {
            property<String>("fullText") {
                resolver { article: Article ->
                    "${article.id}: ${article.text}"
                }
            }
        }
    }
 
    schema.execute("""
        {
            article(id: 5, text: "Hello World") {
                id
                fullText
            }
        }
    """).let(::println)
}

KGraphQL is using coroutines behind the scenes to provide great asynchronous performance.

See KGraphQL docs for more in depth usage.

Ktor Plugin

KGraphQL has a Ktor plugin which gives you a fully functional GraphQL server with a single install function call. Example below shows how to set up a GraphQL server within Ktor and it will give you a GraphQL Playground out of the box by entering localhost:8080/graphql.

fun Application.module() {
  install(GraphQL) {
    playground = true
    schema {
      query("hello") {
        resolver { -> "World!" }
      }
    }
  }
}

You can follow the Ktor tutorial to set up a KGraphQL server with ktor from scratch up.

MicroProfile GraphQL
MP GraphQL is a code-first specification for building GraphQL applications. It uses annotations and design patterns similar to JAX-RS to enable rapid development.
README

MicroProfile GraphQL is a GraphQL server and client specification for building GraphQL applications. It’s unique annotation-based API approach enables rapid application development. Applications coded to the MP GraphQL APIs are portable, and can be deployed into Java server runtimes such as Open Liberty, Quarkus, Helidon and Wildfly. This means that your applications can make use of other Jakarta and MicroProfile technologies.

MP GraphQL features include:

  • Annotation-based APIs
  • Integration with Jakarta CDI
  • Type-safe and dynamic client APIs
  • Exception handling
  • Easy integration with Jakarta and MicroProfile technologies

Want to get started? Check out these resources:

Or these videos:

Domain Graph Service (DGS) Framework
The DGS Framework (Domain Graph Service) is a GraphQL server framework for Spring Boot, developed by Netflix.
README

The DGS Framework (Domain Graph Service) is a GraphQL server framework for Spring Boot, developed by Netflix.

Features include:

  • Annotation based Spring Boot programming model
  • Test framework for writing query tests as unit tests
  • Gradle Code Generation plugin to create types from schema
  • Easy integration with GraphQL Federation
  • Integration with Spring Security
  • GraphQL subscriptions (WebSockets and SSE)
  • File uploads
  • Error handling
  • Many extension points

See DGS Framework Getting Started for how to get started.

Spring for GraphQL
Spring for GraphQL provides support for Spring applications built on GraphQL Java.
README

Spring for GraphQL provides support for Spring applications built on GraphQL Java. See the official Spring guide for how to build a GraphQL service in 15 minutes.

  • It is a joint collaboration between the GraphQL Java team and Spring engineering.
  • Our shared philosophy is to provide as little opinion as we can while focusing on comprehensive support for a wide range of use cases.
  • It aims to be the foundation for all Spring, GraphQL applications.

Features:

  • Server handling of GraphQL requests over HTTP, WebSocket, and RSocket.
  • An annotation-based programming model where @Controller components use annotations to declare handler methods with flexible method signatures to fetch the data for specific GraphQL fields. For example:
@Controller
public class GreetingController {
 
    @QueryMapping
    public String hello() {
        return "Hello, world!";
    }
 
}
  • Client support for executing GraphQL requests over HTTP, WebSocket, and RSocket.
  • Dedicated support for testing GraphQL requests over HTTP, WebSocket, and RSocket, as well as for testing directly against a server.

To get started, check the Spring GraphQL starter on https://start.spring.io and the samples in this repository.

GraphQL Java Generator
GraphQL Java Generator is a tool that generates Java code to speed up development for Client and Server of GraphQL APIs
README
  • GraphQL Java client: it generates the Java classes that call the GraphQL endpoint, and the POJO that will contain the data returned by the server. The GraphQL endpoint can then be queried by using a simple call to a Java method (see sample below)
  • GraphQL Java server: it is based on graphql-java (listed here above). It generates all the boilerplate code. You’ll only have to implement what’s specific to your server, which are the joins between the GraphQL types. GraphQL Java Generator is available as a Maven Plugin. A Gradle plugin is coming soon. Please note that GraphQL Java Generator is an accelerator: the generated code doesn’t depend on any library specific to GraphQL Java Generator. So, it helps you to start building application based on graphql-java. Once the code is generated, you can decide to manually edit it as any standard java application, and get rid of GraphQL Java Generator. Of course you can, and should, according to us :), continue using GraphQL Java Generator when your project evolves.
Apollo Client
A powerful JavaScript GraphQL client, designed to work well with React, React Native, Angular 2, or just plain JavaScript.
AWS Amplify
A JavaScript library for application development using cloud services, which supports GraphQL backend and React components for working with GraphQL data.
gq-loader
A simple JavaScript GraphQL client,Let the *.gql file be used as a module through webpack loader.
GQty