Spring 공식 문서에서 제공하는 guide 들이 굉장히 쓸모있고 유용하고나, 쉽더라도 매우 중요한 내용을 간단하게 알려주고 있어 이 guide들을 하나씩 빠르게 훑어보려 한다. 다만 이 guide들은 대부분 java를 기반으로 하고 있기 때문에 직접 kotlin으로 바꿔서 적어보는 과정이 필요할 것 같고, 그 과정에서도 당연히 공부가 될 거라 생각한다.
간단한 HTTP GET request를 처리할 수 있는 서비스를 만들고, json 형태로 값을 return 해주며 parameter를 받을 수 있게 만들어본다.
Spring Initializer로 간단하게 시작한다. 다만 kotlin으로 바꿔서 할 것이기에 차이는 살짝 있다. 이 과정에서 약간 시행착오를 겪었기에 JPA 관련 Dependency를 추가하는 것은 추천한다. 그렇지 않으면 나처럼 후에 gradle 파일에 하나하나 찾아가며 넣는 불상사가 일어나게 된다.. ㅎ
@Entity
class Greeting(
val content: String,
@Id @GeneratedValue
val id: Long
)
## HttpControllers.kt
@RestController
@RequestMapping("/api")
class GreetingController {
@GetMapping("/greeting")
fun greeting(@RequestParam(value = "name", defaultValue = "World") name: String) =
Greeting(String.format("Hello, %s!", name), 1)
}
여기서 기존 MVC controller와 RESTful web service controller의 차이가 return 해주는 데이터 object에 있다고 한다. 기존의 경우와 달리 RESTful web의 경우 Greeting Entity object 자체를 json 형태로 돌려주기 때문이라고 한다.
또 (5)에서 object를 자체로 return 시켜도 Jackson이라는 라이브러리가 spring의 구조에 들어있어 "MappingJackson2HttpMessageConverter" 이라는 class 가 이를 알아서 변환시켜 준다.
main() 함수를 실행시키고 "http://localhost:8080/greeting"를 방문해보면 아래와 같이 원하는 데로 결과가 나오는 것을 확인해 볼 수 있다.
간단한 내용이기도 했고, 이전 tutorial에서 한번은 해봤던 것이라 복습의 의미로 진행해보았다. 오히려 앞으로 java로 된 guide 코드를 kotlin으로 작성하는데 노력을 좀 더 쓰지 않을까 하는 생각이 들었다.
작성한 코드는 다음과 같다.