Skip to content

Commit 433c2f1

Browse files
committed
[BOOK-79] refactor: infra,apis RestClient 각 외부 APi별 분리 (#15)
1 parent 6313699 commit 433c2f1

File tree

5 files changed

+27
-16
lines changed

5 files changed

+27
-16
lines changed

apis/src/main/kotlin/org/yapp/apis/config/InfraConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import org.yapp.infra.InfraBaseConfigGroup
1010
InfraBaseConfigGroup.JPA,
1111
InfraBaseConfigGroup.ASYNC,
1212
InfraBaseConfigGroup.REDIS,
13-
InfraBaseConfigGroup.OAUTH
13+
InfraBaseConfigGroup.REST_CLIENT
1414
]
1515
)
1616
class InfraConfig

infra/src/main/kotlin/org/yapp/infra/InfraBaseConfigGroup.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.yapp.infra
22

3-
import org.yapp.infra.config.external.oauth.RestClientConfig
3+
import org.yapp.infra.config.external.api.RestClientConfig
44
import org.yapp.infra.config.external.redis.RedisConfig
55
import org.yapp.infra.config.internal.async.AsyncConfig
66
import org.yapp.infra.config.internal.jpa.JpaConfig
@@ -11,5 +11,5 @@ enum class InfraBaseConfigGroup(
1111
ASYNC(AsyncConfig::class.java),
1212
JPA(JpaConfig::class.java),
1313
REDIS(RedisConfig::class.java),
14-
OAUTH(RestClientConfig::class.java)
14+
REST_CLIENT(RestClientConfig::class.java)
1515
}

infra/src/main/kotlin/org/yapp/infra/config/external/oauth/RestClientConfig.kt renamed to infra/src/main/kotlin/org/yapp/infra/config/external/api/RestClientConfig.kt

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,34 @@
1-
package org.yapp.infra.config.external.oauth
1+
package org.yapp.infra.config.external.api
22

33
import org.apache.hc.client5.http.config.RequestConfig
44
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient
55
import org.apache.hc.client5.http.impl.classic.HttpClients
66
import org.apache.hc.core5.util.Timeout
77
import org.springframework.context.annotation.Bean
88
import org.springframework.context.annotation.Configuration
9+
import org.springframework.context.annotation.Primary
910
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory
1011
import org.springframework.web.client.RestClient
1112
import org.yapp.infra.InfraBaseConfig
1213

1314
@Configuration
15+
1416
class RestClientConfig : InfraBaseConfig {
1517

1618
@Bean
17-
fun restClient(): RestClient {
19+
@Primary
20+
fun generalRestClient(): RestClient {
21+
return createConfiguredRestClientBuilder().build()
22+
}
23+
24+
@Bean("aladinApiRestClient")
25+
fun aladinRestClient(): RestClient {
26+
return createConfiguredRestClientBuilder()
27+
.baseUrl("http://www.aladin.co.kr/ttb/api")
28+
.build()
29+
}
30+
31+
private fun createConfiguredRestClientBuilder(): RestClient.Builder {
1832
val requestConfig = RequestConfig.custom()
1933
.setConnectionRequestTimeout(Timeout.ofDays(5000))
2034
.setResponseTimeout(Timeout.ofDays(5000))
@@ -28,6 +42,5 @@ class RestClientConfig : InfraBaseConfig {
2842

2943
return RestClient.builder()
3044
.requestFactory(factory)
31-
.build()
3245
}
3346
}

infra/src/main/kotlin/org/yapp/infra/external/aladin/AladinApi.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@ import org.yapp.infra.external.aladin.response.AladinSearchResponse
1010
@Component
1111
class AladinApi(
1212
private val aladinRestClient: AladinRestClient,
13-
@Value("\${aladin.api.ttbkey}")
14-
private val ttbKey: String
13+
@Value("\${aladin.api.ttbkey:#{null}}")
14+
private var ttbKey: String? = null
1515
) {
16-
// AladinBookSearchRequest DTO를 직접 받도록 변경
1716
fun searchBooks(request: AladinBookSearchRequest): Result<AladinSearchResponse> {
1817
return runCatching {
19-
// DTO의 toMap() 메서드를 호출하여 Map으로 변환
2018
val aladinApiParams = request.toMap()
2119
aladinRestClient.itemSearch(ttbKey, aladinApiParams) // Map으로 전달
2220
}

infra/src/main/kotlin/org/yapp/infra/external/aladin/AladinRestClient.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.yapp.infra.external.aladin
22

3+
import org.springframework.beans.factory.annotation.Qualifier
34
import org.springframework.stereotype.Component
45
import org.springframework.web.client.RestClient
56
import org.springframework.web.util.UriComponentsBuilder
@@ -8,11 +9,10 @@ import org.yapp.infra.external.aladin.response.AladinSearchResponse
89

910
@Component
1011
class AladinRestClient(
11-
builder: RestClient.Builder
12+
@Qualifier("aladinApiRestClient") private val restClient: RestClient
1213
) {
13-
private val client = builder
14-
.baseUrl("http://www.aladin.co.kr/ttb/api")
15-
.build()
14+
15+
private val client = restClient
1616

1717
private val API_VERSION = "20131101"
1818
private val DEFAULT_OUTPUT_FORMAT = "JS"
@@ -30,7 +30,7 @@ class AladinRestClient(
3030
}
3131

3232
fun itemSearch(
33-
ttbKey: String,
33+
ttbKey: String?,
3434
params: Map<String, Any>
3535
): AladinSearchResponse {
3636
val uriBuilder = UriComponentsBuilder.fromUriString("/ItemSearch.aspx")
@@ -46,7 +46,7 @@ class AladinRestClient(
4646
}
4747

4848
fun itemLookUp(
49-
ttbKey: String,
49+
ttbKey: String?,
5050
params: Map<String, Any> = emptyMap()
5151
): AladinBookDetailResponse {
5252
val uriBuilder = UriComponentsBuilder.fromUriString("/ItemLookUp.aspx")

0 commit comments

Comments
 (0)