A Clojure library providing a full GraphQL implementation with schema validation, query execution, and high-performance parsing.
graphql-clj is a Clojure library that implements the GraphQL specification, allowing developers to build GraphQL servers and APIs in Clojure. It provides schema definition, query validation, and execution capabilities, solving the need for a native GraphQL solution in the Clojure ecosystem.
Clojure developers building GraphQL APIs or servers who need a library that integrates with Clojure's functional programming style and tooling.
Developers choose graphql-clj for its simplicity, adherence to the GraphQL spec, and performance optimizations like a high-performance Java parser, making it a reliable choice for GraphQL in Clojure projects.
A Clojure library that provides GraphQL implementation.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
It rigorously validates GraphQL schemas and queries against the specification, ensuring correctness, as shown in the schema-validator and query-validator functions that throw errors on non-compliance.
Uses a Java-based parser for efficient parsing of schemas and queries, improving execution speed, which is highlighted in the 'What's new' section for version 0.2.
Supports caching of validated schemas and queries to enhance performance in repeated executions, demonstrated in the caching example where validated objects are memoized.
Version 0.2 introduced cleaner, separated APIs for schema and query parsing, making integration easier, as noted in the migration guide and usage examples.
The migration from version 0.1.x to 0.2 involved significant API changes, such as separated parsers and simplified validators, which can disrupt existing projects and indicate instability.
The README only demonstrates basic query execution with no mention of mutations, subscriptions, or other GraphQL operations, suggesting it might lack support for full GraphQL implementations.
Beyond a basic demo and usage snippets, the library lacks comprehensive guides, tutorials, or detailed error handling examples, which could hinder adoption and troubleshooting.