[Java 프로젝트] 환율 조회기 #2 API 호출 메커니즘과 데이터 흐름
이전 편을 먼저 확인해 주세요.
https://restartstudies.tistory.com/67
[Java 프로젝트] 환율 조회기 #1 한국수출입은행 API 발급편
[Java 프로젝트] 환율조회기 #1 한국수출입은행 API 발급편 바로가기미리보기순서도(플로우 차트)인증키 발급 방법 미리보기 순서도1. url 연결해서 환율 정보 받아오기 2. 선택지 출력하고 입력 받
restartstudies.tistory.com
바로가기
수출입은행 API 호출 메커니즘
API 서버는 수많은 요청을 받습니다. 그래서 우리가 요청할 때 누구인지(인증키), 어떤 데이터를 필요로 하는지(파라미터)를 URL이라는 하나의 문자열에 담아 요청하는 것입니다.
1. URL 빌딩
요청을 할 때에는 요청 URL + 요청변수로 이루어져 요청을 합니다.
요청 URL : https://oapi.koreaexim.go.kr/site/program/financial/exchangeJSON
요청 변수
(1) authkey(필수) : 인증키로 누구인지 확인
(2) searchdate(선택) : 조회하고 싶은 날짜
(3) data(필수) : 서비스 코드로 현재환율 조회 API는 'AP01'
예시 : https://oapi.koreaexim.go.kr/site/program/financial/exchangeJSON?authkey=(개인 발급 키 입력)&searchdate=20260313&data=AP01
즉, 요청 URL에 요청 변수를 붙여 요청하는 방식입니다. 이때 authkey는 개인마다 다르며, searchdate는 생략해도 됩니다. 생략 시 현재일을 기준으로 요청을 합니다.
2. 스트림 열기
URL을 완성한 뒤, Javadml 'HttpURLConnection' 객체를 이용해 실제로 서버와 통신을 합니다.
1. Connection 객체 생성
2. Request Method 설정
3. InputStream 연결
+ 왜 3가지 스트림을 연결하는가?
효율적(buffer 사용)으로, 정확하게(reader 사용) 읽기 위해 3가지 스트림을 사용합니다. 자세한 역할은 아래와 같습니다.
실제 사용 코드 = new BufferedReader(new InputStreamReader(connection.getInputStream()))
보기 쉽게 정렬한 코드
// 1. 바이트 스트림 가져오기 (가장 원초적인 객체)
InputStream rawStream = connection.getInputStream();
// 2. 문자 변환기로 감싸기
InputStreamReader reader = new InputStreamReader(rawStream, "UTF-8");
// 3. 성능 향상을 위해 버퍼로 한 번 더 감싸기
BufferedReader bufferedReader = new BufferedReader(reader);
1. connection.getInputStream()
서버와 내 컴퓨터 사이의 통로 자체를 여는 역할을 합니다. 데이터가 바이트 단위로 전송되는 컴퓨터끼리의 통신입니다.
2. new InputStreamReader()
바이트를 문자로 변환합니다. 01011 등 바이트 단위의 전송을 'A, B' 같은 글자로 변환하는 번역기 역할입니다.
3. new BufferedReader()
데이터를 효율적으로 모아 읽습니다. 한 글자씩 읽기보다는 일정량을 buffer에 모은 뒤 readLine() 메서드로 한 번에 읽습니다.(없다면 한 글자마다 서버와 통신을 주고받게 됩니다)
3. 합치기
조각조각 들어오는 문자열 줄들을 StringBuilder를 사용해 하나의 거대한 JSON 문자열을 완성합니다.
4. 정리
(1) 우리가 작성한 URL을 들고 HTTP가 서버에 가서 데이터를 받아오면
(2) 우리는 Stream을 통해 들어온 데이터(01011...)를 reader를 통해
(3) 하나의 문자열로 합치는 과정을 거칩니다.

마무리
다음 편부터 실제 작성했던 코드를 보며 어떻게 작동하도록 했는지 적어보도록 하겠습니다. 다음 편에 자세히 언급하겠지만 과거에 코드의 효율이나 최적화 등 아무것도 신경 쓰지 않고 온전히 내 생각대로 돌아가게끔 설계했으므로 참고만 해주시는 게 좋습니다. 또한 최적화와 정리를 나름대로 깔끔이 한 코드도 공부해서 올려볼 예정입니다.
마지막으로 늦게 올린점 사과 말씀 드립니다. 프로젝트 파일이 날아가서 다시 정리할 생각을 안 하고 있었다가 쓴 글 마무리는 지어야 할 것 같아 다시 꺼내게 되었습니다.
다음 포스팅에서 직접 코드를 보겠습니다.
https://restartstudies.tistory.com/81
'자바 > 환율 조회 API 프로젝트' 카테고리의 다른 글
| [Java 프로젝트] 환율 조회기 #3 3년 전 환율 조회 프로그램, 코드 한 줄씩 뜯어보고 개선점 찾기 (2) | 2026.03.19 |
|---|---|
| [Java 프로젝트] 환율 조회기 #1 한국수출입은행 API 발급편 (0) | 2024.03.03 |