記事としてはかなり粗いです。
サーバーサイド Kotlinに入門するため勉強記事になります。
ちなみに当方は、Androidエンジニアでサーバーサイド経験はゼロ
使用するもの
SpringBoot
Kotlin
GraphQL
環境
IntelliJ IDEA 2019.1 (Ultimate Edition)
JRE: 1.8.0_202-release-1483-b39 x86_64
macOS 10.14.4
実装1 まずはシンプルに
Graphqlのリクエストにversion
があれば、常に1.0
を返す処理を作成する。
まずプロジェクト作成
プロジェクト名はkotlin-graphql-sampleとした
graphqlライブラリを追加
build.gradleを以下のように修正
コミット
https://github.com/ikemura23/kotlin-graphql-sample/commit/f34c03d9344b9258b489f5ef0e9e98d20c3e8c2f
// buildscriptを追加
buildscript {
ext.kotlin_version = '1.3.31'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
classpath "org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE"
}
}
// apply pluginを追加
apply plugin: 'kotlin'
apply plugin: "kotlin-spring"
apply plugin: 'kotlin-kapt'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group 'kotlin'
version '1.0-SNAPSHOT'
repositories {
jcenter() // 追加
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
// ここから追加
compile 'com.graphql-java-kickstart:graphql-spring-boot-starter:5.7.3'
// to embed Altair tool
runtime 'com.graphql-java-kickstart:altair-spring-boot-starter:5.7.3'
// to embed GraphiQL tool
runtime 'com.graphql-java-kickstart:graphiql-spring-boot-starter:5.7.3'
// to embed Voyager tool
runtime 'com.graphql-java-kickstart:voyager-spring-boot-starter:5.7.3'
implementation 'org.springframework.boot:spring-boot-devtools'
// testing facilities
testCompile 'com.graphql-java-kickstart:graphql-spring-boot-starter-test:5.7.3'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
MainApplicationクラスを作成
package demo
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication //アノテーション追加
class MainApplication {
companion object {
@JvmStatic
fun main(args: Array<String>) {
SpringApplication.run(MainApplication::class.java, *args)
}
}
}
試しにMainApplication
を実行してみる。
ビルドログにエラーが出てなければOK
graphqlのschemeを作成する
schemeというのか分かってないが、queryファイルを作成する
type Query {
version: String!
}
version というリクエストに対してString型を返す、という意味らしい
String!の!
は「Nullではない」という事のようだ
graphqlのKotlinコードを作成
graphqlのリクエストに対して、Kotlinの処理を記述する。
@Component
class Query : GraphQLQueryResolver {
// versionというリクエストに対して
fun version(): String {
return "1.0" // 常に1.0を返す
}
}
この時点でMainApplication
を再度ビルドして実行する。
エラーが出ていなければ、以下のspring-boot-devtoolsにアクセスできる。
使い方は以下の通り
これでシンプルなSpringBoot + Kotlin + GraphQLが作成できた。
完成物
本当はもっと色々試したが、今回はここまで。
GitHubにコードが全て載っているので見たければどうぞ