GraphQL tools & libraries - Part 3
It took a while, but nevertheless, here it finally is - GraphQL Tools & Libraries Part 3. If you missed it here’s a link to part one & part two of GraphQL tools & libraries. Now let’s dig in.
Graphene Python is a library for building GraphQL APIs with Python. It’s declared goal is to provide a simple and extendable API to make devs lives easier. While fast and easy to use it’s also versatile and data-agnostic. Graphene offers:
- Integrations with different frameworks like Django, SQLAlchemy, and Google App Engine,
- Instantly ready to use, will work out of the box with your current stack
- Built-in Relay support,
- Supports every kind of data source, SQL, NoSQL, custom Python objects, and others.
Unlike many tools and libraries that aim to help here and there, Firecamp is a larger tool packed with features that aim to be a swiss army knife for API development. They describe it as a campsite for developers to test and enhance their work. It serves both as a multi-purpose dev tool and as a platform to test HTTPs, WebSocket, and GraphQl endpoints. Among noteworthy Firecamp features we will find:
- visual components that make everything look more transparent and professional
- introspection viewer which lets you review schema
- code snippet generator for over 10 different languages
- automatically managed query history for previous query requests
Dgraph prides itself on being the only native GraphQL Database with a graph backend. It has some pretty ambitious goals as its description states:
Dgraph's goal is to provide Google production-level scale and throughput, with low enough latency to be serving real-time user queries, over terabytes of structured data.
Looking at it, the main advantages here is that it’s scalable and distributed while the biggest feature is ACID transactions. To put it short, it's a set of properties a database system maintains during transaction execution that guarantees data validity in spite of errors, power outages, and other problems.
- shared and distributed architecture
- GraphQL inspired language
- distributed ACID transactions
- query autocompletion for strongly typed queries,
- supports mapped types,
- JS/TS support (Browser, NodeJS, and React Native),
- simpler approach to GraphQL parsing using the graphql-js library and parsing AST to simpler types.
AWS AppSync is a powerful application development service that adds additional functionality on top of GraphQL. The key selling point here is that it reduces the amount of code you need to write and accelerates development by abstracting part of the backend.
Automatic code generation - available via AppSync management console or the AWS Amplify CLI, it lets you use automatically generated schemas and resolvers minimizing the amount of coding you have to do manually.
Pipeline Resolvers - each resolver consists of a Before and After mapping template with a list of functions and each function has request and response mapping templates that manage interactions with the data source. This means you can stack different functions to perform more complex resolver operations.
AWS CloudFormation - automate your work by managing your AWS stack and resources via templates. Simply define the resources you need in a JSON or YAML file, deploy the service via the CloudFormation console and AWS will generate and make the resources ready for use as specified.
Well, that’s it for part three. As you can see GraphQL is very flexible and using it can be made even more advantageous with the right tools. Some of those are small tools and libraries that will provide a few quality of life improvements, some are larger tools and services that will completely change the way you work with GraphQL. It’s obviously up to you to choose what works best for you and I sincerely hope I helped with that at least a little bit.