Written by
dk-lite
on
on
Upbit Wrapper 개발
데이터 수집처리를 위해 보통 Open API를 사용해본적이 있을 것 이다. 대부분 REST API기반으로 특정 URL로 REST Method를 요청하면 사이트에서는 응답을 보내주는 방식이다. 만약 사이트에서 제공되어진 API 사용문서로 그대로 개발을 진행하면 코드 가독성이 떨어지거나 중복된 코드들이 계속 등장하는걸 볼 수 있다.
그래서 우리는 Upbit 에서 제공되는 API 문서기반으로 파이썬을 사용하는 유저가 편하게 이용할 수 있도록 Wrapper를 개발해보고자 한다. 추가적으로 PyPi업로드를 하여 쉬운 Package 다운로드까지 지원해보자
포스팅의 진행순서는 아래와 같다.
- 업비트 API 분석
- 함수를 표현하는 방법
- 구조화
- Common 함수 개발
- 비즈니스 로직 개발
업비트 API분석
우선 업비트 개발자 센터에서 제공되는 API Guides와 Reference를 참고하여 중요한 부분을 서술해보자면
- REST API를 이용한 요청
- JWT를 통한 인증처리
API Reference 부분을 분석해보면 두가지 큰 틀로 나뉘어진다.
- Exchange API
- 유저의 민감한 정보들과 연결되며 코인 계좌 상황 및 주문 그리고 출금 서비스까지 요청을 수행할 수 있다. 그렇기에 본인 인증절차가 필요하며 인증방식은 HMAC기반 인증방식으로 API사용신청 시 제공되어진 Accesskey, Secretkey가 필요하다.
- Quotation API
- 코인 시세관련된 요청을 수행한다. 종목조회, 캔들조회, 체결조회, 호가정보 등을 요청할 수 있으며 인증과정을 요구하지 않지만 무분별한 요청을 제한하기 위해 IP에 따른 횟수 제한을 가진다.
조금 더 나아가 제공되어진 예시 코드를 참고로 어떻게 요청하면 되는지에 대한 분석을 해보자.
일반적인 레스트 에이피아이에서의 입력값을 알아보고 공통적인 부분을 코드화 진행
또한 메소드에 따른 방법을 제시하고 위 인증처리에 대해서도 분석을 해보자
rest 요청시 필요한 항목은 대해서 살펴보자
- Headers
Parameter :
Data :
Quotaion API
시세 캔들 조회 예시를 한번 보자
import requests
url = "https://api.upbit.com/v1/candles/days?count=1"
headers = {"Accept": "application/json"}
response = requests.get(url, headers=headers)
print(response.text)
- 요청하는 URL은 https://api.upbit.com/v1/candles/minutes/{unit} 이고 unit에 따라 분 캔들이 달라진다.
- header
- requests package를 사용하여 get 요청을 한다.
다음과 같은 큰 틀의 프로세스로 진행된다.
- 요청할 함수 선택 및 Parameter 입력
- 데이터 URL, 및 get, post, delete 함수 설정
- header 삽입
- parameter 삽입
개발하게 된 이유
업비트 api 분석
함수 표현 방식선택
개발 예시
구조화
pypi 업로드까지 …