# [spring.io]RESTful 웹 서비스 호출하기(코틀린 ver.)
#kotlin #spring
RESTful 웹 서비스 호출하기
스프링의 RestTemplate
을 사용하여 RESTful 웹 서비스를 호출하는 예제입니다.
호출할 테스트 URL 은 https://gturnquist-quoters.cfapps.io/api/random 입니다.
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>
REST 리소스 가져오기
https://gturnquist-quoters.cfapps.io/api/random URL을 호출하면 다음과 같은 JSON 응답을 받아옵니다.
{
type: "success",
value: {
id: 10,
quote: "Really loving Spring Boot, makes stand alone Spring apps easy."
}
}
도메인 클래스 생성하기
Quote 클래스 생성
class Quote (
val type : String,
val value : Value
){
override fun toString(): String {
return "Quote{" +
"type='" + type + '\'' +
", value=" + value +
'}';
}
}
Value 클래스 생성
class Value(
val id: Long,
val quote : String
) {
override fun toString(): String {
return “Value{“ +
“id=“ + id +
“, quote=‘” + quote + ‘\’’ +
‘}’;
}
}
애플리케이션 생성
- 참고 사이트에서는 RestTemplate 의 getForObject 함수를 사용하지만,
코틀린에서는 getForObject 를 사용할 경우 코드가 조금 복잡해지기 떄문에 getForEntity를 사용합니다.
fun main() {
val quote: ResponseEntity<Quote> = RestTemplate().*getForEntity*<Quote>(
“https://gturnquist-quoters.cfapps.io/api/random”)
*println*(quote.toString())
}
실행 결과
<200,Quote{type='success', value=Value{id=5, quote='Spring Boot solves this problem. It gets rid of XML and wires up common components for me, so I don't have to spend hours scratching my head just to figure out how it's all pieced together.'}},[Content-Type:"application/json;charset=UTF-8", Date:"Sat, 17 Oct 2020 14:36:41 GMT", X-Vcap-Request-Id:"ad5f0439-f4ee-42b7-495c-0c44834274d5", Content-Length:"235", Connection:"keep-alive"]>
'Spring' 카테고리의 다른 글
[spring.io] 레디스로 메시지 통신하기(코틀린 ver.) (0) | 2020.10.19 |
---|---|
[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 |