Spring · SpringBoot 공식 가이드를 kotlin으로 해보세요 ~ 외부 API 호출 ~
11419 단어 gradlespring-bootKotlinspring
소개
이 시리즈에서는 Spring · SpringBoot 공식 가이드를 참고로 Kotlin에서 튜토리얼을 실시합니다.
이번에는 외부 API 호출을 기반으로 명령 줄에서 두드리는 API 클라이언트를 만듭니다.
완성품 소스 코드는 이쪽
시리즈 기사
시리즈 기사 일람
필요한 환경
Spring Initializr
Spring Initializr에서 초기 모듈을 다운로드합니다.
다음과 같은 느낌으로. 필요한 종속성은 Spring Web뿐입니다.
다운로드가 완료되면 IDE로 가져오십시오.
데이터를 저장하는 도메인 클래스 만들기
이번에는 이 API를 사용합니다.
{"type":"success","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."}}
좋은 느낌으로 무작위 값이 돌아옵니다.
그럼 먼저 위의 형식의 Josn 데이터를 저장하는 도메인 클래스를 만듭니다.
src/main/kotlin/com/example/ktconsumingrest/Quote.kt
package com.example.ktconsumingrest
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
@JsonIgnoreProperties
class Quote(
var type: String,
var value: Value
) {
override fun toString(): String {
return "Quote{" +
"type='" + type + '\'' +
", value=" + value +
'}';
}
}
src/main/kotlin/com/example/ktconsumingrest/Value.kt
package com.example.ktconsumingrest
class Value(
var id: Long,
var quote: String
) {
override fun toString(): String {
return "Value{" +
"id=" + id +
", quote='" + quote + '\'' +
'}';
}
}
API 호출 부분 만들기
spring boot의 메인 클래스, @SpringBootApplication 어노테이션이있는 클래스를 다음과 같이 편집합시다 (이 예에서는 KtConsumingRestApplication.kt)
src/main/kotlin/com/example/ktconsumingrest/KtConsumingRestApplication.kt
package com.example.ktconsumingrest
import org.slf4j.LoggerFactory
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.context.annotation.Bean
import org.springframework.web.client.RestTemplate
import org.springframework.boot.CommandLineRunner
import org.springframework.boot.web.client.RestTemplateBuilder
@SpringBootApplication
class KtConsumingRestApplication {
private val logger = LoggerFactory.getLogger(KtConsumingRestApplication::class.java)
@Bean
fun restTemplate(builder: RestTemplateBuilder): RestTemplate {
return builder.build()
}
@Bean
@Throws(Exception::class)
fun run(restTemplate: RestTemplate) = CommandLineRunner {
val quote = restTemplate.getForObject(
"https://gturnquist-quoters.cfapps.io/api/random",
Quote::class.java)
logger.info(quote!!.toString())
}
}
fun main(args: Array<String>) {
runApplication<KtConsumingRestApplication>(*args)
}
실행하다
빌드합니다. 이번에는 실행 가능한 항아리를 준비하고 여기를 두드려 응용 프로그램을 실행합니다.
응용 프로그램의 루트 디렉토리에서 다음 명령을 실행합니다.
$ ./gradlew build
jar를 실행합니다.
$ java -jar build/libs/kt-consuming-rest-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.1.RELEASE)
2019-11-10 11:23:35.318 INFO 49218 --- [ main] c.e.k.KtConsumingRestApplicationKt : Starting KtConsumingRestApplicationKt on LAB-N1253.local with PID 49218 (/develop/learn/spring/kotlin-spring-guides/kt-consuming-rest/build/libs/kt-consuming-rest-0.0.1-SNAPSHOT.jar started by ishizukayusuke in /develop/learn/spring/kotlin-spring-guides/kt-consuming-rest)
2019-11-10 11:23:35.322 INFO 49218 --- [ main] c.e.k.KtConsumingRestApplicationKt : No active profile set, falling back to default profiles: default
2019-11-10 11:23:36.772 INFO 49218 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2019-11-10 11:23:36.788 INFO 49218 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2019-11-10 11:23:36.788 INFO 49218 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.27]
2019-11-10 11:23:36.872 INFO 49218 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-11-10 11:23:36.872 INFO 49218 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1441 ms
2019-11-10 11:23:37.126 INFO 49218 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-11-10 11:23:37.324 INFO 49218 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2019-11-10 11:23:37.332 INFO 49218 --- [ main] c.e.k.KtConsumingRestApplicationKt : Started KtConsumingRestApplicationKt in 2.656 seconds (JVM running for 3.223)
2019-11-10 11:23:38.796 INFO 49218 --- [ main] c.e.k.KtConsumingRestApplication : Quote{type='success', value=Value{id=3, quote='Spring has come quite a ways in addressing developer enjoyment and ease of use since the last time I built an application using it.'}}
Quote{type='success', value=Value{id=3, quote='Spring has come quite a ways in addressing developer enjoyment and ease of use since the last time I built an application using it.'}}
↑ 부분이 API 호출 결과가 됩니다.
Reference
이 문제에 관하여(Spring · SpringBoot 공식 가이드를 kotlin으로 해보세요 ~ 외부 API 호출 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yu-s/items/050310998d413a563974텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)