Scalatra
One of the core design goals of GraphQLize is not to tie to any web development framework and remain as a drop-in JVM library.
Getting started with GraphQLize in Scalatra is simple and involves only a few steps.
Adding Dependencies
Let's start by creating new Scalatra project and then add the graphqlize-java
& other required dependencies in build.sbt
Initializing GraphQLizeResolver
To initialize GraphQLizeResolver
, we need a DataSource.
Configuring DataSource
note
Make sure you are changing the below values to refer your database connection. The below example assumes that you are using the sakila database created from this .
- Postgres
- MySQL
note
Currently, it takes around 8 to 12 seconds to initialize. I am planning to in a future release.
Adding GraphQL Endpoint
The next step is adding an API to expose the GraphQL endpoint. To do it, first, add a data class to model the incoming GraphQL request.
Create a new file GraphQLizeScalatraServlet.scala and add the following
Then add a new router /graphql
and deserialize the request to this GraphQLRequest
class using Jackson. Finally, get the query & the variables from the request and invoke the resolve
method on the initialized instance of GraphQLizeResolver
. It returns the result
as stringified JSON
Test Drive
To do a test drive of this implementation, start the server and hit the endpoint via curl.
You'll get a response like below.
GraphQL Playground and Voyager
With the GraphQL endpoint up and running, the next step is introspecting the GraphQL schema and try out some more queries.
To introspect, we are going to make use of , a tool to visualize GraphQL API as an interactive graph. Adding it to our project is easy thanks to static content serve capability of Scalatra.
All you need to do is download this file and put it under the src/main/webapp directory.
When you restart the server, the Voyager will be available at http://localhost:8080/voyager.html. A sample output would look like this.
Then to interact with the GraphQL API, let's add the . Like Voyager, download this file and put in the src/main/webapp directory.
This GraphQL playground will be available at http://localhost:8080/playground.html after server restart.
Next Steps
Congrats! You are on course to build impressive applications using GraphQLize in less time. To save yourself some more time, do refer this documentation to know more about how GraphQLize generates the GraphQL schema and the queries.
The sample code is available in .
note
You can also customize certain default behaviours of GraphQLize in future releases.