GraphQL Kotlin
GraphQL Kotlin consists of number of libraries that aim to simplify running a GraphQL server in Kotlin.
? Modules
- graphql-kotlin-schema-generator - Code only GraphQL schema generation for Kotlin
- graphql-kotlin-federation - Schema generator extension to build federated GraphQL schemas
- graphql-kotlin-spring-server - Spring Boot auto-configuration library to create GraphQL web app
- examples - Example apps that use graphql-kotlin libraries to test and demonstrate usages
⌨️ Usage
Below is a basic example of how graphql-kotlin-schema-generator
converts your Kotlin code into a GraphQL schema. For more details, see our documentation below or in the individual module READMEs
// Your existing Kotlin code
data class Widget(val id: Int, val value: String)
class WidgetService {
fun widgetById(id: Int): Widget? {
// grabs widget from a data source, might return null
}
}
// Generate the schema
val config = SchemaGeneratorConfig(supportedPackages = listOf("org.example"))
val queries = listOf(TopLevelObject(WidgetService()))
toSchema(config, queries)
will generate
type Query {
widgetById(id: Int!): Widget
}
type Widget {
id: Int!
value: String!
}
? Documentation
Examples and documentation are available on our documentation, or in each module README file.
If you have a question about something you can not find in our documentation, the indivdual modules, or javadocs, feel free to create an issue and tag it with the question label.
? Contact
This project is part of Expedia Group Open Source but also maintained by a dedicated team
-
Expedia Group
-
@ExpediaGroup/graphql-kotlin-committers
- Tag us in an issue on Github
- We also have a public channel, (#graphql-kotlin), open on the Kotlin Slack instance. See the info here on how to join this slack instance
✏️ Contributing
To get started, please fork the repo and checkout a new branch. You can then build the library locally with Gradle
./gradlew clean build
See more info in CONTRIBUTING.md
⚖️ License
This library is licensed under the Apache License, Version 2.0