2023. 4. 4. 16:08ㆍ나의 이야기
신입 개발 미션을 모두 마무리하고 최종 면접만 오매불망 기다리면서 CS공부를 하고있던 중
너무나도 심심해보이는 나를 위해(?) 팀장님이 미션을 주셨다.
"공공API를 활용한 주소지 검색 및 위경도 프로젝트"
항상 직접 만든 API만을 활용하다가 공공 API를 활용하는 경험을 할 수 있었다.
먼저 공공API들은 모두 매뉴얼이 존재한다.
그래서 미션을 받자마자 API의 공식 문서들을 모두 뒤져봤다.
코드까지 상세하게 알려주어서 API를 테스트 하는데는 아무런 지장이 없었다.
바로 API실습을 진행했다.
공공API를 활용하기위해서는 홈페이지에서 API사용 등록을 진행 한 후 KEY를 수령해야한다.
개발용 API KEY는 신청과 동시에 바로 발급이 되고
운영용 API KEY는 신청하고 여러 서류를 작성한 후 사용자 본인인증을 진행하면
약간의 시간(1시간정도 걸린거같다..)이 지난 후 키가 발급된다.
키를 활용하여 바로 API를 테스트 해보았다.
주소를 입력했을때 검색 키워드를 전송하면
공공API에서 파싱을 하여 응답 결과를 Return해준다
오류가 발생할 수도 있지만 에러코드별로 매뉴얼이 존재하니
"잘 읽어보면 많은 도움이 될것이다."
개발API키를 발급받아서 획득한 "juso"데이터로
운영API에 활용할 수 있었다.
최종적으로 획득한 결과물
API는 건물의 위치를 X,Y좌표로 표시해주었지만
나는 위도와 경도로 표시를 해야했기에
XY좌표를 위도경도로 변경해주는 코드를 만들었다.
package com.example.nglstest.function;
import org.osgeo.proj4j.BasicCoordinateTransform;
import org.osgeo.proj4j.CRSFactory;
import org.osgeo.proj4j.CoordinateReferenceSystem;
import org.osgeo.proj4j.ProjCoordinate;
import java.util.ArrayList;
import java.util.List;
public class XYToLatLonConverter{
public static List<Double> ConvertXY(double x, double y){
List<Double> cont = new ArrayList<>();
CRSFactory factory = new CRSFactory();
CoordinateReferenceSystem srcCrs = factory.createFromName("EPSG:5179");//현재 좌표
CoordinateReferenceSystem dstCrs = factory.createFromName("EPSG:4326");//변경할 좌표
BasicCoordinateTransform transform = new BasicCoordinateTransform(srcCrs, dstCrs);
ProjCoordinate srcCoord = new ProjCoordinate(x, y);
ProjCoordinate dstCoord = new ProjCoordinate();
transform.transform(srcCoord, dstCoord);//좌표변환
cont.add(dstCoord.x);
cont.add(dstCoord.y);
return cont;
}
}
위 코드를 활용하면 X,Y좌표를 입력하면
List<Double>={경도,위도} 를 리턴해준다.
공공 API를 활용하는것은 비용적으로는 이득이지만 단점도 여럿 보였다.
1. 응답시간이 길다(+들쭉날쭉하다)
나만 사용하는 서버가 아니기 때문에 사용량에 따라서 응답시간이 천차만별이었다.
2. 장애 대응이 어렵다
API서버에 장애가 생기면 내가 어찌 할 도리가 없다
3. API커스터마이징이 불가해서 필요에따라 여러번 호출을 해야한다.
API호출 한번에 모든 정보를 가져올수 없어서 필요에따라 3번까지 호출을 해야했다.