DEV Community

lucasnscr
lucasnscr

Posted on

2 1

Implementing GraphQL with Quarkus

Project description

πŸš€ This project aims to create an application with Quarkus and GraphQL.

Here is the complete code of the project

Technologies

The following technologies were used to carry out the project and it is necessary to install some items:

  • Java
  • Docker
  • Maven
  • Quarkus
  • GraphQL

Quarkus

Quarkus is a native Java framework in Kubernetes, it was developed for Java virtual machines (JVMs) and native compilation. It optimizes this language specifically for containers, making this technology an effective platform for serverless, cloud, and Kubernetes environments.

Features of Quarkus

  • Container first(Fast startup, low memory consumption and work with small images or containers)
  • Low memory consumption
  • Fast Startup

For Containers

Whether the application resides in the public cloud or on an internally hosted Kubernetes cluster, features such as fast startup and low memory consumption are important to keep overall hosting costs down.
Quarkus was built on the philosophy of container prioritization. This means it is optimized for reduced memory usage and faster boot times in the following ways:

  • Advanced Graal/SubstrateVM Compatibility
  • Compile-time metadata processing
  • Reduction in the use of reflection
  • Preboot native images

GraphQL

GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.

GraphQL can be divided into some parts which are: Schema, Query and Mutations.

Schema

A Schema is the heart of the protocol. It represents the functionality available, it represents a contract where objects, composition of objects and data type are represented. Below is an example definition of Schema.

type Movie {
    id:ID
    name: String
    year: Int
}
Enter fullscreen mode Exit fullscreen mode

Query

Query is used to define the data query contract. Its functionality is comparable to the GET verb of REST APIs. Below you can see an example of the type Query.

type Query {
    getMovie(id: ID!): Movie
}
Enter fullscreen mode Exit fullscreen mode

Mutations

Mutation is used to define the data manipulation contract. Its functionality is comparable to that of the POST, PUT, PATCH and DELETE verbs of REST APIs. Below you can see an example of the type Mutation:

type Mutation {
    addMovie(movie: StudyInput!): Study
}
Enter fullscreen mode Exit fullscreen mode

Details this project

To run GraphQL in the project follow the information below

Endpoint: http://localhost:8080/q/graphql-ui/

UI for GraphQL Api

You will use below Json to run command to create data:

mutation CREATE {
      createBank(bank:
        {
        name: "GraphQL Bank", country:"USA"}) {
        id
        name
        country
        }
    }
Enter fullscreen mode Exit fullscreen mode

Now you will use the json to query the data entered in the previous json

{
  banks{
   id
   name
   country
  }
}
Enter fullscreen mode Exit fullscreen mode

Here we finish a Project implementing GraphQL with Quarkus.

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

πŸ‘‹ Kindness is contagious

Please leave a ❀️ or a friendly comment on this post if you found it helpful!

Okay