Local/search/address road_name 예외처리 기준

카카오 Local API 관련 질문에서 토론을 계속:

하루 기다렸으나 답글이 달리지 않아 새 주제로 끌어올려봅니다. 제가 너무 성급했다면 기존 스레드에서 계속 답변해주시면 감사하겠습니다 ㅠㅠ


라고 말씀해주셨는데요,

도로명주소 도로명(가로수로)에 임의로 지명을 첨가(강내면 가로수로)하여 리턴하는 것이 카카오 로컬 API 측에서 의도하신 동작이라는 의미이신가요? :confused:
주소검색 docs 에서도 일절 언급이 되지 않는 부분이라, 개발자 입장에서 전혀 예측할수가 없었는데요
의도하신 동작이라면 동작 조건 등이 궁금합니다.

의도했다는 게 어떤 의미인가요?
리턴되는 값을 사용하시면 되는데 어떤 문제가 있어서 수정을 요청하시는 것인지 말씀해주세요.

그리고 궁금하다고 하신 동작 조건이 어떤 걸 말씀하시는 지 역시 이해가 잘 되지 않습니다.
이 부분에 대해서도 추가로 설명 부탁합니다.

// https://dapi.kakao.com/v2/local/search/address.json?query=서초동_1321
{
  "documents": [
    {
      "address": {
        "address_name": "서울 서초구 서초동 1321",
        /* ... */
      },
      "address_name": "서울 서초구 서초동 1321",
      "address_type": "REGION_ADDR",
      "road_address": {
        "address_name": "서울 서초구 서초대로 396",
        /* ... */
        "road_name": "서초대로", 
        /* ... */
      },
      "x": "127.024577935936",
      "y": "37.4967192804106"
    }
  ],
  "meta": {
    "is_end": true,
    "pageable_count": 1,
    "total_count": 1
  }
}
//https://dapi.kakao.com/v2/local/search/address.json?query=탑연리_295
{
  "documents": [
    {
      "address": {
        "address_name": "충북 청주시 흥덕구 강내면 탑연리 295",
        /* ...*/
      },
      "address_name": "충북 청주시 흥덕구 강내면 탑연리 295",
      "address_type": "REGION_ADDR",
      "road_address": {
        "address_name": "충북 청주시 흥덕구 강내면 가로수로 480-5",
        /* ... */
        "road_name": "강내면 가로수로",
        /* ... */
      },
      "x": "127.354065231223",
      "y": "36.6228977992307"
    }
  ],
  "meta": {
    "is_end": true,
    "pageable_count": 1,
    "total_count": 1
  }
}

서울 서초구 서초대로 396 -> body.documents[0].road_address.road_name === "서초대로"
충북 청주시 흥덕구 강내면 가로수로 480-5 -> body.documents[0].road_address.road_name === "강내면 " + "가로수로"

그렇다고 모든 읍면 주소가 이렇게 되는 것도 아닌 것이,
세종특별자치시 조치원읍 세종로 2511 -> "세종로" 입니다.

일반적으로 도로명만 내려올 것이 기대되는 road_name에 (조건을 알 수 없으므로 개발하는 입장에서는) 랜덤하게 지명이 덧붙어 내려오는 상황이라, 다른 공공데이터나 기존 데이터와 JOIN하여 사용하기가 어렵습니다.
청주시의 가로수로만 문제가 되는 것인지, 이런 데이터가 여럿 있는지도 일일이 검색을 해보지 않는 이상 알 수가 없구요.

  1. 우선 이게 카카오 측에서 의도하신 응답인지도 알 수 없는 상황이었고,
  2. 의도하셨다 하더라도 \s로 split해서 예외처리를 구현할 수야 있지만, 너무 광역으로 적용하게 되어 새로운 오류를 발생시킬 것이 우려되어 조건을 알 수 있다면 그걸로 분기처리를 하는게 확실할 것 같아 문의드리게 되었습니다.
1개의 좋아요

동일 API 에서도 케이스가 다르게 나온다는 말씀이셨군요.
초기 문의 주셨을 때, 우편번호API 와 주소검색API 의 응답값을 동일하게 해달라는 요청으로 이해했었습니다.

말씀주신 부분에 대해서는 담당 부서에서 추가로 확인이 필요해보입니다.
확인 후 다시 답변 드릴게요.

1주일 정도 지난 것 같은데, 현재 상황이 어느 단계에 있는지라도 update 부탁드리겠습니다.

해당 사항 수정 적용 완료되었습니다.
“탑연리 295” 쿼리 시 “road_name”: “가로수로” 로 정상 노출 확인하였습니다.

{
  "documents": [
    {
      "address": {
        "address_name": "충북 청주시 흥덕구 강내면 탑연리 295",
        "b_code": "4311331031",
        "h_code": "4311331000",
        "main_adderss_no": "",
        "main_address_no": "295",
        "mountain_yn": "N",
        "region_1depth_name": "충북",
        "region_2depth_name": "청주시 흥덕구",
        "region_3depth_h_name": "강내면",
        "region_3depth_name": "강내면 탑연리",
        "sub_adderss_no": "",
        "sub_address_no": "",
        "x": "127.354065231223",
        "y": "36.6228977992307",
        "zip_code": ""
      },
      "address_name": "충북 청주시 흥덕구 강내면 탑연리 295",
      "address_type": "REGION_ADDR",
      "road_address": {
        "address_name": "충북 청주시 흥덕구 강내면 가로수로 480-5",
        "building_name": "",
        "main_building_no": "480",
        "region_1depth_name": "충북",
        "region_2depth_name": "청주시 흥덕구",
        "region_3depth_name": "강내면 탑연리",
        "road_name": "가로수로",
        "sub_building_no": "5",
        "undergroun_yn": "",
        "underground_yn": "N",
        "x": "127.354128434584",
        "y": "36.6229308632727",
        "zone_no": "28172"
      },
      "x": "127.354065231223",
      "y": "36.6228977992307"
    }
  ],
  "meta": {
    "is_end": true,
    "pageable_count": 1,
    "total_count": 1
  }
}
1개의 좋아요