프로젝트/버스카드조회

Open_API ( based java )

IT grow. 2018. 9. 16. 23:05
반응형

나는 이제 REST API가 무엇인지에 대해서 조금 알았고 , API에 대한 무서움도 조금 사라진것 같다.


이제 어떻게 OPEN API를 다룰 것인지 그게 문제인데, 그럴땐 구글링 만한게 없다.


나는 API경험 ' 무 ' 이다 .


그래서 OPEN API를 어떻게 사용하는지에 대해서 구글링을 해보았고,


해본 결과를 알려줄려고한다.


연습을 하는 것이므로 , 엄청 먼가 대단한 부분은 하나도 없다.


먼저 https://www.data.go.kr/ 이 사이트에 접속을 해준다.


공공데이터포털 이라고 해서 OPEN API를 내가 원하는 데이터를 얻을 수 있다.


만약 ID가 없다면 회원가입을 먼저 해주자.


아참 , 이 사이트에 접속하기 전에 Explorer로 접속을 해주자 , 크롬은 아직 안된다고 한다


내가 다뤄볼 API는 미세먼지농도에 관한 것이다 .


로그인을 하고 검색창에 미세먼지라고 입력을 해주면 다음과 같은 화면이 뜬다.





클릭해준다.


클릭하면 다음과 같은 화면이 뜨는데 ,  정말 친절하게 설명해 놓았다.

먼저 데이터포멧의 형태 , End Point , 참고문서가 보이는데 


참고문서는 정말 좋다 . 

이 API를 어떻게 사용해야 하는지에 대해서 알려주고 , 설명가 같은것이다.


우선 API를 사용하고 싶으므로 활용신청을 눌러준다 . 



청을 클릭하게 되면 개발신청이라고 해서 새로운 창이 뜨는데 , 

나는 이미 신청을 해놓았으므로 안되지만 , 사용하고자 하는 사용자는 

자신에게 맞게 클릭해서 신청을 해주자 . 

아참  , 그리고 신청한 API는 자동승인이므로 바로 사용을 할 수 있다.


신청한 뒤 마이페이지 가면 내가 신청한 목록을 볼 수 있다.


먼저 인증 키 발급이 보일 것인데 인증발급을 해주자 , 

나중에 Serviecekey라고 해서 이 사람이 인증받은 사람인지 , 구별하는 것 같다.


이제 API 사용할 준비는 된 것이다.

문제는 어떻게 사용할 것인가 인데 , 위에서도 보이겠지만 참고문서가 있을 것이다.


참고 문서를 보면 다음과 같은 한글 파일이 열린다.


목차를 보면 정말 정말 친절하게 설명을 해놓은 목차가 있다 . 

우리는 지금 서비스 명세에 대기오염정보조회 서비스를 이용할 것이다.

설명서를 쭉 내리다 보면 대기오염정보조회 서비스에 해당하는 개요를 볼 수 있다.

서비스 보안 , 서비스 정보 , 적용 기술 수준 ,  서비스 URI 등 확인가능하다.



메시지 교환 유형과 , 로깅 수준도 볼 수 있고 , 데이터 갱신주기는 10분이라는 것도 확인할 수 있다.



보니까 JSON 방식으로 호출도 가능한가 보다 . 


오퍼레이션 목록인데 , 어떤 메소드가 정의되어 있는지 친절하게 설명해 준다.


오퍼레이션을 보니까 측정소별 실시간 측정정보 조회라고 되어있는걸 보니 , 

측정소별에 대한 값을 찾아줘야 할 것이다. 밑에 예제에서는 종로구라는 샘플데이터가 들어가 있는걸 확인한다.


그리고 버전에 따른 호출되는 정보가 다르다는 것도 확인한다.


밑에는 메서드에 대한 설명이다 . 이런게 있구나 하고 지나간다.


다음이 이제 이 API를 어떻게 사용하는지에 대한 구체적인 방법이다 .

요청을 통한 응답 메시지에 대한 결과값인데 , 아까 본 getMsrstnAcctoRltmMesureDnsty를 확인할 수 있고,

stationName = 종로구 이걸 통해 측정소별에 대한 변수를 확인 가능하고 , dataTerm , pageNo , numOfRows 등등 확인 가능하다

중요한 것은 Servicekey = 이 부분에 아까 우리가 받았던 인증 키를 넣어줘야 인증이 되면서 응답메시지에 올바른 결과값을

받아 올 수 있다.



이제 직접 한번 해보자 . 


다음은 크롬에 주소창에 URI를 복사해서 인증키만 추가해서 넣어준 응답 메시지 값이다.

정말 신기했다 . API를 처음접해보는 나로써는 신기할 뿐이다. 



확인도 되었고 , java에서 이것들을 어떻게 쓰는지가 중요하다.


다음은 java에서 URI를 통해서 값을 GET방식으로 받아오는 방식이다.


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Example2 {
public static void main(String [] args)
{
BufferedReader br = null;
try
{
String urlstr = "http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?stationName=%EC%A2%85%EB%A1%9C%EA%B5%AC&dataTerm=month&pageNo=1&numOfRows=10&ServiceKey=oOAJnP%2FmbpEtkXEOu4jK1LzPbACEpO6Iy2zRdBDiUjVWIWNL61sqfioNEiw1ZYguuqls5Fje3UHZvhxyNr4uKQ%3D%3D&ver=1.3";
# 위 urlstr에 아까 우리가 사용해본 URI주소를 넣어준다.

URL url = new URL (urlstr);

HttpURLConnection urlconnection = (HttpURLConnection) url.openConnection();
# urlconnection에 연결되는 역할을 ,
urlconnection.setRequestMethod("GET");
# GET방식으로

br = new BufferedReader(new InputStreamReader(urlconnection.getInputStream(),"UTF-8"));
String result = "";
String line;
while((line = br.readLine()) != null)
{
result = result + line + "\n";
}
System.out.println(result);
}
catch(Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}

결과값은 다음과 같다 .




이렇게 해봄으로써 API를 다루는것에 있어서 거부감?? 무서움 ?? 같은게 조금은 사라졌다.


무엇보다도 겁먹을 필요가 없는게 , 설명서에 정말 친절하게 사용법이 나와있을 뿐더러 ,

예제 code도 있으니 , 처음 접하는 사람들도 편하게 사용할 수 있을 것이다.

나또한 마찬가지이다.









반응형