Kotlin data class로 Json 형식 Rest API 만드는 방법
지난 강의에서는 Rest API 구현 기초를 위해 간단하게 Hello 메세지만 Plain text로 응답하는 간단한 Rest API를 만들었다.
[Kotlin Spring Boot 강의] 사용자 입력에 반응하는 Rest API 구현 방법
[Kotlin Spring Boot 강의] 사용자 입력에 반응하는 Rest API 구현 방법
Kotlin Spring Boot Controller를 사용해 Rest API 구현하기 1. Controller 별도 파일 및 기본 클래스 만들기Controller를 만들때에는 main() 함수가 있는 파일이 아닌 별도로 만들어 주는 것이 좋다. 간단한 예로
scienceai.tistory.com
하지만, 실무현장에서는 API 응답을 Plain text로 하는 경우는 매우 드물고 99%가 모두 Json 포맷으로 구성해 데이터를 전달하니 이번시간에는 실제처럼 응답하는 Json Rest API를 구현해보도록 하겠다.
1. data class로 Json 구조 만들기
data class는 데이터를 담거나 전달하는 용으로 생각하면 좋다. 어렵게 생각할 필요없이 테이블에서 각 컬럼 이름과 타입을 정의한다고 보면되고, 이것이 Json response에서 쓰이고 데이터베이스에서도 다양하게 쓰이는 것이다.
data class는 쓰기 쉬우면서도 수많은 곳에서 매우 매우 유용하게 쓰이는 클래스 방식이니 꼭!!!!! 기억하고 익숙해지길 바란다.
Book 리스트를 전달하는 API를 만들기 위해 간단히 id, title, author 파라미터를 담을 클래스를 정의한다.
package com.example.demo
data class Book(val id: Int, val title: String, val author: String)
2. Book Controller 클래스 생성
지난번에는 String Template을 전달했다면 이번에는 data class 들을 모은 리스트를 전달할 것이다. 프로세스는 동일하다.
Kotlin class 생성
package com.example.demo
class BookController()
dataset 구성
일반적으로는 Database에 가져오겠지만 지금은 스터디를 위해 하드코딩으로 리스트를 만들도록 하겠다.
package com.example.demo
class BookController() {
val data = listOf<Book>(
Book(1, "코틀린 강의", "뷰티풀스택"),
Book(2, "스프링 부트 강의", "뷰티풀스택"),
Book(3, "스프링부트 Rest API 개발", "뷰티풀스택")
)
}
API 함수 생성
위의 Book 리스트 변수를 전달하는 getBooks 라는 함수를 생성한다.
package com.example.demo
class BookController() {
val data = listOf<Book>(
Book(1, "코틀린 강의", "뷰티풀스택"),
Book(2, "스프링 부트 강의", "뷰티풀스택"),
Book(3, "스프링부트 Rest API 개발", "뷰티풀스택")
)
fun getBooks(): List<Book> = data
}
3. Spring Framework에 등록시키기
Spring Component 등록
@RestController 어노테이션을 Kotlin 클래스에 붙여줌으로써 Spring Rest Component로 등록시킨다.
@RestController
class BookController() {
사용자 Request를 해당되는 URI에 맵핑
@RequestMapping 을 적절한 URI를 지정하여 클래스에 붙여준다. 웹브라우저에서 x.x.x.x:8080/books 라고 치면 Kotlin 클래스에 자동으로 연결되게 단다.
@RestController
@RequestMapping("/books")
class BookController() {
URI와 Action 연결
@GetMapping 어노테이션을 관련된 함수에 붙여준다. 위에서는 URI에 맵핑시킨다면, 아래의 예제는 그 URL 주소로 들어오더라도 그중에 "GET" Request에 대해서 반응하는 함수임을 지정해주게 된다.
package com.example.demo
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/books")
class BookController() {
val data = listOf<Book>(
Book(1, "코틀린 강의", "뷰티풀스택"),
Book(2, "스프링 부트 강의", "뷰티풀스택"),
Book(3, "스프링부트 Rest API 개발", "뷰티풀스택")
)
@GetMapping
fun getBooks(): List<Book> = data
}
4. 실행
어제 만든 hello URI를 먼저 실행해보면 아래와 같이 Plain text로 응답이 된다.

이제 오늘 data class를 활용한 Json Rest API 응답이 정상적으로 동작할지 실행해보자.

성공이다!!! 🎉
이제 그럴싸한 Rest API가 완성이 되었다. 다음 강의에서는 실제 데이터베이스와 연동하는 방법에 대해서 알아보도록 하겠다.
'Spring Boot' 카테고리의 다른 글
[Kotlin Spring Boot 강의] Spring Data 패키지로 초간단실제 DB 연동하는 CRUD API 구현 방법 (0) | 2025.02.03 |
---|---|
[Kotlin Spring Boot 강의] JDBC로 실제 DB 연동하는 CRUD API 구현 방법 (0) | 2025.02.03 |
[Kotlin Spring Boot 강의] 사용자 입력에 반응하는 Rest API 구현 방법 (0) | 2025.01.25 |
[Kotlin Spring Boot 강의] 프로젝트 생성 방법 (0) | 2025.01.24 |
댓글