[spring.io]RESTful 웹 서비스 만들기(코틀린 ver.)
RESTful 웹 서비스 만들기
이번 가이드에서는 스프링과 코틀린 언어로 “Hello, World”를 출력하는 RESTful 웹 서비스를 만들어볼 예정입니다.
http://localhost:8080/greeting GET 요청에 위와 같은 JSON 인사를 응답하는 웹 서비스를 만듭니다.
{"id":1,"content":"Hello, World!”}
추가로, http://localhost:8080/greeting?name=User 와 같이 문자열 쿼리에 name 파라미터를 전달 받으면 전달 받은 이름을 응답합니다.
(name 파라미터 값이 없을 경우 기본 값은 World입니다.)
{"id":1,"content":"Hello, User!”}
Spring Initializr 로 시작하기
메이븐 기준으로 다음 의존성을 추가한 프로젝트를 생성합니다.
- Spring Web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
리소스 클래스 생성
서비스는 /greeting 에 대한 GET 요청과 문자열 쿼리의 name 파라미터를 처리합니다. 서비스는 200 OK 코드와 함께 다음과 같은 JSON 을 본문에 넣어 응답합니다.
{
"id": 1,
"content": "Hello, World!"
}
- Greeting 클래스 생성
class Greeting( val id : String, val content : String` )
리소스 컨트롤러 생성
HTTP 요청 처리를 위해 @RestController 어노테이션을 추가합니다.
@RestController
class GreetingController {
val counter = AtomicLong()
@GetMapping(“/greeting”)
fun greeting(@RequestParam(value=“name”, defaultValue = “World”) name :String ) =
Greeting(counter.incrementAndGet(), “Hello, $name”)
}
@GetMapping 어노테이션은 /greeting의 HTTP GET 요청을 greeting() 메소드에 매핑합니다.
@RequestParam 어노테이션은 문자열 쿼리 name 의 값을 greeting() 메소드의 name 파라미터에 주입합니다. 문자열 쿼리에 name 값이 없을 경우에는 defaultValue를 주입합니다.
테스트 결과
curl localhost:8080/greeting
{"id":4,"content":"Hello, World"}
curl localhost:8080/greeting?name=User
{"id":5,"content":"Hello, User”}
'Spring' 카테고리의 다른 글
[spring.io] 스프링 JDBC를 활용하여 관계형 데이터베이스 연동하기(코틀린 ver.) (0) | 2020.10.18 |
---|---|
[spring.io]RESTful 웹 서비스 호출하기(코틀린 ver.) (0) | 2020.10.17 |
스프링 부트에서 도커 컨테이너 이미지 생성하기 (0) | 2020.07.08 |
[React+Spring] 리액트, 스프링 부트로 웹소켓 구현하기 (3) | 2020.04.09 |
메이븐(maven) 빌드 시 "Source option 5 is no longer supperted." 에러가 발생할 경우 해결 방법 (0) | 2020.04.03 |