🍇
Kotlin Spring GraphQL
対象者
- Kotlin Springに興味ある人
- IntelliJ IDEAを操作したことがある人
サーバーサイド Kotlinなるものに興味があってやってみた✨
今回は、 GraphQLを使ってみる!
チュートリアル通りにやれば進めることはできる。
こちらのサイトでプロジェクトのテンプレートを作成する。
zipファイルをダウンロードして、IDEで開く。ダウンロードしてない人はこちら
こちらのプラグインも追加しておく
プロジェクトの説明
動画のチュートリアルを参考にプロジェクトのテンプレートを作成して、GraphQLで、クエリ、ミューテーションができるところまで進めていきます。
application.properties
を設定
#spring.application.name=demo
spring.graphql.path=/graphql
spring.graphql.graphiql.enabled=true
schema.graphqls
を作成して、スキーマを定義する
type Query {
getPosts: [Post]!
recentPosts(limit: Int!, offset: Int!): [Post]!
}
type Mutation {
createPost(title: String!, description: String): Post!
}
type Post {
id: ID!
title: String!
description: String
}
query
ディレクトリを作成してその中に、PostResolver.kt
を作成する。ここに今回は、GraphQLを操作するメソッドを定義します。
package com.jboycode.demo.query
import org.springframework.graphql.data.method.annotation.Argument
import org.springframework.graphql.data.method.annotation.MutationMapping
import org.springframework.graphql.data.method.annotation.QueryMapping
import org.springframework.stereotype.Controller
import java.util.UUID
@Controller
class PostResolver {
@QueryMapping
fun getPosts(): List<PostDto> {
return listOf(
PostDto(
id = UUID.randomUUID(),
title = "test title",
description = "some description"
)
)
}
@QueryMapping
fun recentPosts(@Argument limit: Int, @Argument offset: Int): List<PostDto> {
return listOf(
PostDto(
id = UUID.randomUUID(),
title = "test title",
description = "some description"
),
PostDto(
id = UUID.randomUUID(),
title = "second test title",
description = "second some description"
)
)
}
@MutationMapping
fun createPost(@Argument title: String, @Argument description: String?): PostDto {
return PostDto(
id = UUID.randomUUID(),
title = title,
description = description
)
}
}
data class PostDto(
val id: UUID,
val title: String,
val description: String? = null
)
Runボタンを押してこちらのURLへいけば、ブラウザで、GraphQLを操作することができます。
感想
サーバーサイドで、Kotlinを使ったことがなくてモバイルでしか経験がなかったもので、どんな感じかなと使ってみたのですが、Java Spring Boot よりはコードが読みやすく使いやすかったですね✨
暇な時に、サーバーサイド Kotlin を勉強してみようかなと思いました笑
Discussion