공공데이터 포털에는 수많은 REST API를 제공한다.
REST API에 대한 공부가 부족한 사람들은 REST API 개념 포스팅을 참조 바란다.
데이터 찾기 - 데이터 목록
서비스 유형 - REST
확장자 - JSON
이제 아래의 상세 기능 탭에서 요청변수(Request Parameter)와 출력결과(Response Element)를 보고 사용하면 된다.
언어별 샘플 코드도 제공해준다.
샘플코드(JAVA)
/* Java 1.8 샘플 코드 */
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.io.BufferedReader;
import java.io.IOException;
public class ApiExplorer {
public static void main(String[] args) throws IOException {
StringBuilder urlBuilder = new StringBuilder("https://data.myhome.go.kr:443/rentalHouseList"); /*URL*/
urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "=서비스키"); /*Service Key*/
urlBuilder.append("&" + URLEncoder.encode("brtcCode","UTF-8") + "=" + URLEncoder.encode("11", "UTF-8")); /*광역시도 코드*/
urlBuilder.append("&" + URLEncoder.encode("signguCode","UTF-8") + "=" + URLEncoder.encode("140", "UTF-8")); /*시군구 코드*/
urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode("10", "UTF-8")); /*조회될 목록의 페이지당 데이터 개수 (기본값:10)*/
urlBuilder.append("&" + URLEncoder.encode("pageNo","UTF-8") + "=" + URLEncoder.encode("1", "UTF-8")); /*조회될 페이지의 번호 (기본값:1)*/
URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json");
System.out.println("Response code: " + conn.getResponseCode());
BufferedReader rd;
if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else {
rd = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
}
StringBuilder sb = new StringBuilder();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
conn.disconnect();
System.out.println(sb.toString());
}
}
서비스 키는 활용신청 후 제공받은 값을 사용하면 된다.
요청변수(Request Parameter)의 값은 참조 문서를 확인하자.
샘플코드 결과
Response code: 200
{"code":"000"
,"hsmpList":[
{"numOfRows":"10"
,"pageNo":1
,"totalCount":98
,"hsmpSn":31351688
,"insttNm":"LH서울"
,"brtcCode":"11"
,"brtcNm":"서울특별시"
,"signguCode":"140"
,"signguNm":"중구"
,"hsmpNm":"서울특별시 중구"
,"rnAdres":"서울특별시 중구 동호로33길 15"
,"pnu":"1114015400101450001"
,"competDe":{}
,"hshldCo":49
,"suplyTyNm":"매입임대"
,"styleNm":"15"
,"suplyPrvuseAr":15.79
,"suplyCmnuseAr":18.01
,"houseTyNm":{}
,"heatMthdDetailNm":{}
,"buldStleNm":{}
,"elvtrInstlAtNm":{}
,"parkngCo":0
,"bassRentGtn":2000000
,"bassMtRntchrg":396760
,"bassCnvrsGtnLmt":0
},
{
"numOfRows":"10"
,"pageNo":1
,"totalCount":98
,"hsmpSn":31351688
,"insttNm":"LH서울"
,"brtcCode":"11"
,"brtcNm":"서울특별시"
,"signguCode":"140"
,"signguNm":"중구"
,"hsmpNm":"서울특별시 중구"
,"rnAdres":"서울특별시 중구 동호로33길 15"
,"pnu":"1114015400101450001"
,"competDe":{}
,"hshldCo":49
,"suplyTyNm":"매입임대"
,"styleNm":"15"
,"suplyPrvuseAr":15.79
,"suplyCmnuseAr":18.57
,"houseTyNm":{}
,"heatMthdDetailNm":{}
,"buldStleNm":{}
,"elvtrInstlAtNm":{}
,"parkngCo":0
,"bassRentGtn":2000000
,"bassMtRntchrg":399520
,"bassCnvrsGtnLmt":0
},
...
]
}
/**
* REST API return 데이터 추출
*/
JSONParser jsonParser = new JSONParser();
//JSON데이터를 넣어 JSON Object 로 만들어 준다.
JSONObject jsonObject = (JSONObject)jsonParser.parse(sb.toString());
//배열 추출
JSONArray array = (JSONArray) jsonObject.get("hsmpList");
for(int i=0; i<array.size(); i++){
System.out.println("hsmp_"+i+" ===========================================");
//배열 안에 있는것도 JSON형식 이기 때문에 JSON Object 로 추출
JSONObject object = (JSONObject) array.get(i);
//JSON name으로 추출
System.out.println("insttNm ==> "+object.get("insttNm"));
System.out.println("brtcNm ==> "+object.get("brtcNm"));
System.out.println("signguNm ==> "+object.get("signguNm"));
System.out.println("rnAdres ==> "+object.get("rnAdres"));
System.out.println("suplyTyNm ==> "+object.get("suplyTyNm"));
System.out.println("");
}
실행결과
hsmp_0 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 동호로33길 15
suplyTyNm ==> 매입임대
hsmp_1 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 동호로33길 15
suplyTyNm ==> 매입임대
hsmp_2 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 퇴계로71길 36
suplyTyNm ==> 매입임대
hsmp_3 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 마른내로 106
suplyTyNm ==> 매입임대
hsmp_4 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 마른내로 106
suplyTyNm ==> 매입임대
hsmp_5 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 마른내로 106
suplyTyNm ==> 매입임대
hsmp_6 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 마른내로 106
suplyTyNm ==> 매입임대
hsmp_7 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 마른내로 106
suplyTyNm ==> 매입임대
hsmp_8 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 마른내로 106
suplyTyNm ==> 매입임대
hsmp_9 ===========================================
insttNm ==> LH서울
brtcNm ==> 서울특별시
signguNm ==> 중구
rnAdres ==> 서울특별시 중구 마른내로 106
suplyTyNm ==> 매입임대
import시 아래의 라이브러리를 사용해야한다.
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
dependency
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
[JAVA] SortedMap - TreeMap 사용법 (0) | 2022.07.18 |
---|---|
[JAVA] Set 사용법 (0) | 2022.07.15 |
Spring 제공 유틸성 클래스 (StringUtils, BeanUtils) (0) | 2022.07.12 |
[JAVA] - 람다식(Lambda Expressions) (0) | 2022.07.07 |
Enum 메소드 및 활용 (0) | 2022.06.21 |
댓글 영역