ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022.07.05 사이드 프로젝트에 OpenApi 연결
    Side Project 2022. 7. 5. 18:51
    반응형

    사이드 프로젝트(ChargerPin project)

    프로젝트 진행 중입니다.

     

    구현할 기능들

    • 회원가입/로그인 (제작 완료)
    • 전기차 충전소 검색 (충전소 위치로 검색 기능 완료)
    • 전기차 충전소 조회
    • 전기차 충전소 즐겨찾기
    • 즐겨찾기 조회
    • 즐겨찾기 삭제
    • 전기차 충전소 상세조회

    오늘 구현한 기능

    오늘은 전기차 충전소를 위치로 검색하는 기능을 구현하였습니다.

     

    Spring으로 다른 Api에 요청해보는 게 처음이어서 여러 자료를 찾고 그 자료에 있는 방식 중에 지금 제게 맞는 방식으로 조금씩 변경하여 구현하였습니다. (RestTemplate 방식)

    다른 방식도 있었지만 RestTemplate가 제일 나아 보였습니다.

     

    그리고 OpenApi의 서비스 키에 특수문자가 포함되어있는데 URIComponentsBuilder에서 /(Slash)만 인코딩 안 하는 문제가 있어서

    그냥 기본 String에 파라미터를 모두 붙여서 URI로 만들어주어서 Api에 요청하였습니다.

    String url = "http://openapi.kepco.co.kr/service/EvInfoServiceV2/getEvSearchList?ServiceKey=${서비스키}"+"&pageNo=1&numOfRows=10";
    url+="&addr=서초구 우면동".replace(" ", "%20");
    
    try {
    	uri = new URI(url);
    } catch (URISyntaxException e) {
    	e.printStackTrace();
    }

    결과

    {
        "response": {
            "header": {
                "resultCode": "00",
                "resultMsg": "NORMAL SERVICE."
            },
            "body": {
                "items": {
                    "item": {
                        "addr": "서울특별시 서초구 우면동 763 4층 주차장",
                        "chargeTp": 2,
                        "cpId": 5894,
                        "cpNm": "급속01",
                        "cpStat": 2,
                        "cpTp": 10,
                        "csId": 2052,
                        "csNm": "남서울농협 하나로마트 우면점",
                        "lat": 37.45685749231517,
                        "longi": 127.01585735496195,
                        "statUpdateDatetime": "2022-07-05 18:35:00"
                    }
                },
                "numOfRows": 10,
                "pageNo": 1,
                "totalCount": 1
            }
        }
    }

    다음 구현할 기능

    다음으로는 나머지 전기차 충전소 검색 기능을 구현해야 합니다.

    이제 남은 검색 기능은 이렇습니다.

    • 충전소의 이름으로 검색
    • 충전소 고유 ID로 검색

    마치며

    오늘은 URI 인코딩, 디코딩 문제로 너무 시간도 많이 잡아먹어서 힘들었고, 다음에는 인코딩, 디코딩 문제가 다신 안 일어났으면 좋겠다는 생각을 하게 만든 하루였습니다.

    그래도 계속 사이드 프로젝트가 진행이 된다는 게 되게 기분이 좋네요 😇

    저는 아직도 부족하니까 앞으로도 열심히 하겠습니다.

     

    Github

    pokoed(박종연)

    https://github.com/pokoed

    반응형

    댓글

Designed by Tistory.