Cafe24 API를 통한 브랜드 상품 정보 데이터 수집
관련 링크
연동 흐름
+--------+ +---------------+ | |--(A)- Authorization Request ->| Resource | | | | Owner | | |<-(B)-- Authorization Grant ---| | | | +---------------+ | | | | +---------------+ | |--(C)-- Authorization Grant -->| Authorization | | Client | | Server | | |<-(D)----- Access Token -------| | | | +---------------+ | | | | +---------------+ | |--(E)----- Access Token ------>| Resource | | | | Server | | |<-(F)--- Protected Resource ---| | +--------+ +---------------+ 출처: https://datatracker.ietf.org/doc/html/rfc6749#section-1.2
(A) 브랜드 관리자 아이디로 Cafe24 앱스토어 SILD 앱(링크) 를 통해 앱 설치 버튼 클릭
(B) SILD 서버의 앱 연동 API 호출되어 브랜드정보를 포함하여 Cafe24의 인증서버에 인증 코드 요청
(C) redirect된 Cafe24의 인증서버를 통해 실드 검증 후 인증코드 발급
(D) 받은 인증코드로 액세스 토큰 발급 요청하여 액세스 토큰 발급받아서 Token을 포함한 인증 데이터 저장
(E) SILD Partners를 통해 입점신청(링크)을 하지 않았으면 실패 페이지(링크), 입점신청이 되어있으면 성공 페이지(링크) 로 이동됨
관련 ERD
브랜드 공식 홈페이지와 상품 연동
Cafe24의 상품정보 수집 API를 호출하여 원본 데이터를 1차 테이블에 저장, 필요 정보만 가공하여 2차 테이블에 저장, 2차 테이블의 데이터를 ElasticSearch에 인덱싱
상품 연동
주기적 배치 상품 수집
아래 3-a 의 절차를 완료하면 수집이 시작됨
Github > Server(링크)의 InitBatchJob.ts 파일에 서버 구동시 몇분 단위로 배치잡을 실행할지 설정함
상품 카테고리 연동
최초 카테고리 수집
주기적 배치 카테고리 수집
아래 3-a 의 절차를 완료하면 수집이 시작됨
Github > Server(링크)의 InitBatchJob.ts 파일에 서버 구동시 몇분 단위로 배치잡을 실행할지 설정함
카페24 인증토큰 갱신 연동
최초 인증 수집
주기적 배치 인증 수집
Github > Server(링크)의 InitBatchJob.ts 파일에 서버 구동시 몇분 단위로 배치잡을 실행할지 설정함
Cafe24 API 상품 수집 호출
상품정보를 한번에 최대 100개씩 가져올 수 있음
100개에 대해서 세부 정보(할인정보 등)은 상품상세데이터를 따로 조회해야함
가끔씩 일부 상품이 수집이 안되는 경우가 있어서 최종수집 이전 30분부터 현재시간까지 중복해서 수집
수집 예제
배치 잡이 아래처럼 cron expression으로 되어 있음
10 */5 * * * *
이전 수집은 2024-04-03 15:03:12에 끝남
브랜드별 최종 수집일
A: 2024-04-03 15:00:12
B: 2024-04-03 15:02:10
C: 2024-04-03 15:03:12(이전 수집 최종 종료시간)
다음 수집은 2024-04-03 15:05:10에 시작됨
A -> B -> C 브랜드 순서로 수집 시작
A는 2024-04-03 14:30:12(최종 수집일 30분 전)부터 현재 시간까지 수집
A는 15:10:10 이전에 종료됨(다음 최종 수집일은 15:10:10)
B는 2024-04-03 14:32:10부터 현재 시간까지 수집
새 job은 스케줄상 15:10:10에 시작되어야 하는데 아직 이전 job실행중이면 job 취소로 기록
계속 수집
B종료 후 C 시작 -> 종료까지 되어 job 마무리