๋์ ์ผ์ด์ค๋ก๋ ํน์ ๋ ๋ฒจ์ ๋๋ฒ๊ทธ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์
๋๋ค.
์์ฒญ URL๋ฐ ์ํ๊ฐ ์ฐํ์ง๋ง ์ ๋ฆฌ๋์ง ์๊ณ ์ฌ๋ฌ ์ค์ด ์ฐํ ์ด์ง๋ฌ์ด ๋ชจ์ต์
๋๋ค.
o.s.w.c.RestTemplate - HTTP POST http://localhost:8082/spring-rest/persons
o.s.w.c.RestTemplate - Accept=[text/plain, application/json, application/*+json, */*]
o.s.w.c.RestTemplate - Writing [my request body] with org.springframework.http.converter.StringHttpMessageConverter
o.s.w.c.RestTemplate - Response 200 OK
@Configuration
class RestTemplateConfig {
@Bean
fun restTemplate():RestTemplate = RestTemplate()
.also {
it.interceptors.add(LoggingRequestInterceptor(
listOf(CONTENT_TYPE, ACCEPT),
listOf("KEY"))
)
}
class LoggingRequestInterceptor(
private val valuableRequest :List<String>,
private val valuableResponse :List<String>
) : ClientHttpRequestInterceptor {
private val log: Logger = getLogger("REST API")
override fun intercept(request: HttpRequest, body: ByteArray, execution: ClientHttpRequestExecution): ClientHttpResponse {
log.info("[API REQUEST] URI: ${request.method} ${request.uri} HEADER : [${valuableRequestHeader(request.headers, valuableRequest)}] BODY : [${String(body)}]")
val response = execution.execute(request, body)
log.info("[API RESPONSE] URI: ${response.statusCode} ${response.statusText} HEADER : [${valuableResponseHeader(response.headers, valuableResponse)}] BODY : [${String(body)}]")
return response
}
private fun valuableRequestHeader(httpHeaders: HttpHeaders,key:List<String>) = httpHeaders
.filter { key.contains(it.key) }
private fun valuableResponseHeader(httpHeaders: HttpHeaders,key:List<String>)= httpHeaders
.filter { key.contains(it.key) }
}
}
INFO REST API : [API REQUEST] URI: POST https://dummy.restapiexample.com/api/v1/create HEADER : [{Accept=[text/plain, application/json, application/*+json, */*], Content-Type=[text/plain;charset=ISO-8859-1]}] BODY : [{
"status": "success",
"data": {
"name": "junnyland",
"salary": "10000000",
"age": "27",
"id": 100
}]
INFO REST API : [API RESPONSE] URI: 200 OK OK HEADER : [{}] BODY : [{
"status": "success",
"data": {
"name": "junnyland",
"salary": "10000000",
"age": "27",
"id": 100
}]
์ด์๊ฐ์ด ์์ฒญ, ์๋ต์ ๋ํ ๋ก๊ทธ๋ฅผ ์ ํํ๊ฒ ์ฐ์ ์ ์์ต๋๋ค.