[따맵] #1. 따릉이 대여소 저장 및 스케줄링

Euiyeon Park·2025년 7월 31일
0

따맵

목록 보기
1/2
post-thumbnail

Task

  • ✅ 따릉이 대여소 API 호출 → DB 저장
  • ✅ 신규 및 폐쇄 대여소를 고려해 하루 1회 스케줄링

외부 API를 호출하려면?

우선 따릉이 대여소 API를 호출해 우리쪽 DB에 저장하는게 첫 번째 목표였다.
외부 API를 호출하는 방법은 대표적으로 5가지가 있는데,
그 중에서 가장 권장되는 방식인 WebClient를 사용했다.

외부 API를 호출할 때 사용하는 HTTP Client 정리 포스팅

1. application.yml 작성

application.yml스프링 부트 애플리케이션이 동작할 때 필요한 설정 값을 선언하는 곳으로,
따릉이 대여소 API를 호출하는 baseUrlkey 작성했다.
(이 외에 서버, DB, JPA, 로그 설정 등을 yml에 작성한다.)

bikeseoul:
  static:
    key: ${bikeseoul.static.key}
    baseUrl: http://openapi.seoul.go.kr:8088/{apiKey}/json/tbCycleStationInfo

  realtime:
    key: ${bikeseoul.realtime.key}
    baseUrl: http://openapi.seoul.go.kr:8088/{apiKey}/json/bikeList

✨ 발급받은 keyapplication-secret.yml에 별도 저장

2. @ConfigurationProperties

@ConfigurationProperties 어노테이션은 application.yml에 정의된 설정 값을
자바 객체의 필드로 자동 바인딩해주는 어노테이션이다.

즉, yml의 설정 값 → @ConfigurationProperties가 붙은 클래스의 객체로 매핑
→ 필요한 클래스(외부 API를 호출하는 클래스)에서 주입받아 사용

@Component
@ConfigurationProperties(prefix = "bikeseoul.static")
@Getter
@Setter
public class StationProperties {
    private String key;
    private String baseUrl;
}

✨ 추후에 StationApiClient에서 StationProperties를 주입받아 외부 API 호출에 사용

3. WebClient 설정

외부 API를 호출하기 위해서는 다른 서버로 HTTP 요청을 보내고 응답을 받아오는
라이브러리가 필요한데, 그 중 하나가 WebClient다.

✨ 스프링에서는 재사용 가능한 객체(빈)는 직접 생성하지 않고,
@Configuration에서 설정해놓고 필요할 때 의존성 주입을 통해 사용
한다.

@Configuration		// 설정 클래스 명시
public class StationConfig {

    @Bean			// 스프링 빈 객체 등록 대상
    public WebClient.Builder webClientBuilder() {
        return WebClient.builder()
                .exchangeStrategies(ExchangeStrategies.builder()
                        .codecs(configurer -> configurer
                                .defaultCodecs()
                                .maxInMemorySize(10 * 1024 * 1024)) // 10MB
                        .build());
    }
}

4. 외부 API 응답 DTO 작성

외부 API를 호출한 뒤에 받는 응답

5. 외부 API 호출 클라이언트 구현

6. DB 저장

스케줄링

profile
"개발자는 해결사이자 발견자이다✨" - Michael C. Feathers

0개의 댓글