본문 바로가기
programming/OpenApiDEV

오픈 api 테스트 금융감독원 금융상품통합비교 금융상품한눈에

by 개코 - 개발과 코딩 2021. 3. 15.

rest api 데이터를 호출하는 방법도 알았고, 금융상품한눈에 api 를 사용할 수 있는 방법도 알았다.
이제는 테스트를 하고 데이터가 어떻게 나오는지 확인만 하면 된다.
이 과정이 성공했다면 자신이 할 수 있는 방법으로 웹서비스를 만들거나 별도의 프로그램을 만들면 된다.

오픈 api 테스트
금융감독원 금융상품통합비교 금융상품한눈에

금융상품한눈에 홈페이지를 바로가기 하면 금융상품에 대한 여러가지 정보들을 확인할 수 있다.
또한, 자신들이 가진 데이터를 오픈 api 로 제공하여 개발자들의 독자적이고 참신한 컨텐츠를 만들 수 있도록 지원한다.

 

rest api 호출방법 살펴보기

데이터를 불러오려면 rest api 호출방법을 알아야 한다.
이것을 위해 4가지 코드를 만들어 본 것이다.
apache 패키지를 사용한 HttpClient , 자바 기본 패키지를 사용한 HttpUrlConnection 을 가지고 get , post 방식으로 데이터를 호출하는 방법을 살펴보았다.
어떤 것을 사용해도 크게 상관은 없다.

 

2021.03.11 - [programming/java] - rest api httpclient 사용 post 호출 자바로 만들고 테스트 하기

2021.03.11 - [programming/java] - rest api httpclient 사용 post 호출 자바로 만들고 테스트 하기

2021.03.12 - [programming/java] - rest api httpurlconnection 사용 get 호출 자바로 만들고 테스트 하기

2021.03.13 - [programming/java] - rest api httpurlconnection 사용 post 호출 자바로 만들고 테스트 하기

 

요청url 확인하기

금융상품한눈에 오픈 api 를 사용하려면 먼저 사용신청을 하고 인증키를 받아야 한다.

 

2021.03.09 - [open api] - 오픈 api 신청 금융감독원 금융상품통합비교 금융상품한눈에

 

메뉴얼은 홈페이지에 접속하여 직접 확인해보자.
요청url 과 응답결과에 대해 설명한 명세서를 확인할 수 있다.
주의할 점은 필수로 요청해야 될 값과 아래의 결과파일, 발급받은 인증키 부분이다.

 

필수요청 파라미터

인증키 auth : api 사용신청 후 발급받은 인증키
권역코드 topFinGrpNo : 금융회사가 속한 권역 코드
페이지번호 pageNo : 조회할 페이지 번호

 

제공되는 서비스 데이터 항목

금융회사 api
- finlife.fss.or.kr/finlifeapi/companySearch.{결과파일}?auth={발급받은 인증키}&topFinGrpNo=020000&pageNo=1
정기예금 api
- finlife.fss.or.kr/finlifeapi/depositProductsSearch.{결과파일}?auth={발급받은 인증키}&topFinGrpNo=020000&pageNo=1
적금 api
- finlife.fss.or.kr/finlifeapi/savingProductsSearch.{결과파일}?auth={발급받은 인증키}&topFinGrpNo=020000&pageNo=1
연금저축 api
- finlife.fss.or.kr/finlifeapi/annuitySavingProductsSearch.{결과파일}?auth={발급받은 인증키}&topFinGrpNo=060000&pageNo=1
주택담보대출 api
- finlife.fss.or.kr/finlifeapi/mortgageLoanProductsSearch.{결과파일}?auth={발급받은 인증키}&topFinGrpNo=050000&pageNo=1
전세자금대출 api
- finlife.fss.or.kr/finlifeapi/rentHouseLoanProductsSearch.{결과파일}?auth={발급받은 인증키}&topFinGrpNo=050000&pageNo=1
개인신용대출 api
- finlife.fss.or.kr/finlifeapi/creditLoanProductsSearch.{결과파일}?auth={발급받은 인증키}&topFinGrpNo=050000&pageNo=1

 

데이터 불러오기

이전에 만들어진 코드의 주소만 바꿔서 사용해 보도록 한다.
rest api 데이터 호출 예제는 윗 부분에 언급했다.

 

HttpClient 사용하여 데이터 불러오기

기존에 가지고 있던 코드에서 URI 의 주소만 변경해 주었다.

import java.net.URI;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.HttpClientBuilder;

public class RestApi_HttpClient_Get_JavaTest {

	public static void main(String[] args) {
		
		System.out.println("\n");
		System.out.println(" 시작 : Get방식 Rest API 테스트 -----");
		
		//--------------------------------------------------
		
		try {
			
			URI vUri = new URI("http://finlife.fss.or.kr/finlifeapi/companySearch.{결과파일}?auth={발급받은 인증키}&topFinGrpNo=020000&pageNo=1");
			
			HttpClient client = HttpClientBuilder.create().build();
			HttpGet getRequest = new HttpGet(vUri);

			HttpResponse vHttpResponse = client.execute(getRequest);

			//Response 출력
			if (vHttpResponse.getStatusLine().getStatusCode() == 200) {
				
				ResponseHandler<String> vResponseHandler = new BasicResponseHandler();
				String vResponse = vResponseHandler.handleResponse(vHttpResponse);
				
				System.out.println("\n");
				System.out.println("요청 성공");
				System.out.println("\t" + vHttpResponse.getStatusLine().getStatusCode());
				System.out.println("\t" + vHttpResponse.getStatusLine().getReasonPhrase());
				System.out.println("\t" + vResponse);
				
			} else {
				
				System.out.println("\n");
				System.out.println("요청 실패");
				System.out.println("\t" + vHttpResponse.getStatusLine().getStatusCode());
				System.out.println("\t" + vHttpResponse.getStatusLine().getReasonPhrase());
				
			}

		} catch (Exception ex){
			System.out.println(ex.toString());
		}
		
		//--------------------------------------------------
		
		System.out.println("\n");
		System.out.println("종료 : Get방식 Rest API 테스트 -----");
	}
}

HttpClient 요청 결과

HttpUrlConnection 사용하여 데이터 불러오기

기존의 코드에서 URI 부분의 주소만 변경해 주었다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class RestApi_HttpURLConnection_Get_JavaTest {

	public static void main(String[] args) {
		
		System.out.println("\n");
		System.out.println(" 시작 : HttpURLConnection사용 Get방식 Rest API 테스트 -----");
		
		//--------------------------------------------------
		
		try {
			
			StringBuilder vStringBuilder = new StringBuilder();
			String vStringLine;
			
			URL vURL = new URL("http://finlife.fss.or.kr/finlifeapi/companySearch.{결과파일}?auth={발급받은 인증키}&topFinGrpNo=020000&pageNo=1");
			HttpURLConnection vHttpURLConnection = (HttpURLConnection) vURL.openConnection();
			
			vHttpURLConnection.setConnectTimeout(5000);
			vHttpURLConnection.setReadTimeout(5000);
			vHttpURLConnection.setRequestProperty("User-Agent", "Mozilla/4.0");
			vHttpURLConnection.setRequestMethod("GET");
			vHttpURLConnection.setDoOutput(true);

			if (vHttpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
				 
				BufferedReader vBufferedReader = new BufferedReader(
					new InputStreamReader(vHttpURLConnection.getInputStream(), "utf-8")
				);
				
				while ((vStringLine = vBufferedReader.readLine()) != null) {
					vStringBuilder.append(vStringLine).append("\n");
				}
				
				vBufferedReader.close();
				
				System.out.println("\n");
				System.out.println("요청 성공");
				System.out.println("\t" + vHttpURLConnection.getResponseCode());
				System.out.println("\t" + vHttpURLConnection.getResponseMessage());
				System.out.println("\t" + vStringBuilder.toString());
				
			} else {
				
				System.out.println("\n");
				System.out.println("요청 실패");
				System.out.println("\t" + vHttpURLConnection.getResponseCode());
				System.out.println("\t" + vHttpURLConnection.getResponseMessage());
				System.out.println("\t" + vStringBuilder.toString());
				
			}

		} catch (Exception ex){
			
			System.out.println("ex : " + ex.toString());
			
		}
		
		//--------------------------------------------------
		
		System.out.println("\n");
		System.out.println("종료 : HttpURLConnection사용 Get방식 Rest API 테스트 -----");
	}
}

HttpUrlConnection 요청 결과

결과값이 정상적으로 오는 것을 확인할 수 있다.
이 데이터들을 어떻게 가공하고 사용할 것인지는 본인 몫에 달려있다.

반응형

댓글