초보자가 Kotlin + Spring Boot의 Get 요청에서 JSON을 반환하기 위해 한 일

업무로 서버측을 하게 되었으므로 그 연습을 위해 했던 일을 정리했습니다.
서버의 경험은 한순간 밖에 없습니다 🥺🥺🥺 (Java의 입문서를 해낸 정도...

전제



먼저 @getMapping에서 String을 반환하는 방법은
@ 스가사키Kotlin + Spring Boot에서 Hello! World!은 간단하고 이해하기 쉽고 좋았습니다. 다사 🙏
( Spring Initializr의 모습이 바뀌었기 때문에 주의가 필요하네요)

▼▼▼ 참고로 생각해본 코드

GetJsonController.kt
package com.example.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class GetJsonController {
    @GetMapping("/get")
    fun getJson(): String {
        return "私はここでJSONを返したい"
    }
}

return에서 JSON을 반환하고 싶은 느낌



단순히 return의 문자열을 JSON처럼 보았습니다.

GetJsonController.kt
@GetMapping("/get")
    fun getJson(): String {
        return "{\"id\": 1, \"name\": \"test\"}" // エスケープしんどいですね!
    }

이스케이프가 조금 심한 모양을하고 있었기 때문에 조사해 보았습니다.""" 로 둘러싸는 것도 같은 일을 할 수 있는 것 같습니다.
【Kotlin 입문】 더블 쿼테이션 안에 더블 쿼테이션을 표현하는 방법

GetJsonController.kt
@GetMapping("/get")
    fun getJson(): String {
        return """{"id": 1, "name": "test"}"""
    }

▼▼▼ 그렇게 표시됩니다 🎉🎉🎉


return으로 만든 JSON을 반환하고 싶은 느낌



일일 수치하는 것은 힘들기 때문에, JSON을 만들어 던지고 싶습니다.
(옛날, JSON 파일을 어떻게든하고 싶을 때, Jackson을 사용한 것 같은 ...)라고 생각했기 때문에build.gradle를 확인해 봅니다.

build.gradle.kts
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")

오, 확실히 들어 있습니다! 즉시 사용하고 싶습니다.
(처음 들었을 때는 제이슨이야? 잭슨이야?? 사람 이름???

👾👾👾

우선 @JsonCreator 하기 위한 클래스를 만들었습니다.

Data.kt
package com.example.demo

import com.fasterxml.jackson.annotation.JsonCreator

data class Data @JsonCreator constructor (
        val id: Int,
        val title: String
)

쓰고 있어 「에?data class ~~ constructor()는 무엇?」라고 된 자신을 위해서
Kotlin의 data class의 생성자에 대해 현역 엔지니어가 해설 【초보자용】

컨트롤러에서 이 Data 클래스를 사용하도록 다시 씁니다.

GetJsonController.kt
@RestController
class GetJsonController {
    @GetMapping("/get")
    fun getJson(): Data { // 返り値の型をDataにして
        val data = Data(
                id  = 1,
                title = "create JSON!"
        ) // Data()を使って値を入れて
        return data // dataを返します
    }
}

▼▼▼ 할 수 있었습니다~🎉🎉🎉


지금까지 spring + kotlin에서 JSON 요청 및 응답을 시도했습니다.
How to build a Simple REST API with Kotlin and Spring Boot을 참고했습니다. 🙏🙏

요청시 매개 변수를 사용하여 만든 JSON을 반환하고 싶은 느낌



할 수 있을까요? 라고 생각했으므로 해 보겠습니다.
@RequestMapping@RequestParam를 추가해 봅니다.

GetJsonController.kt
@RestController
@RequestMapping
class GetJsonController {
    @GetMapping("/get")
    fun getJson(@RequestParam(value = "title", required = false, defaultValue = "Test title") title: String,
                @RequestParam(value = "id", required = false, defaultValue = "1") id: String): Data {
        val data = Data(
                id = "$id".toInt(),
                title = "$title"
        )
        return data
    }
}

이제 매개 변수에 ?title='hogehoge'&id=4 등을 포함하면 반영됩니다.

▼▼▼ ?title='wow'&id=3 를 붙여 보았을 때의 결과입니다 wow🎉🎉🎉

좋은 웹페이지 즐겨찾기