- 고객이 '집'을 '사'려고 할 때, 사용자 맞춤형 주택 검색 기능을 제공해주는 '집사' 서비스
- 공공데이터 포털 API를 통한 주택 실거래가 데이터 조회 테스트 코드 제공
- 네이버 지도 API를 통한 주소(읍면동 + 지번)을 위치(위도, 경도)로 변환하는 테스트 코드 제공
- 기존에 저장된 주택을 데이터를 기반으로 필터링(거리, 매매가, 월세) 검색 기능에 대한 테스트 코드 제공
- 공공데이터 포털 API + 네이버 지도 API를 활용한 사용자 DB에 주택 데이터 저장 API 제공
기획 단계에서 정의한 플로우로, API 연동은 개발되어 있지 않습니다
| 영문 | 한글 |
|---|---|
| Apartment | 아파트 |
| Detached House | 단독/다가구 |
| Multiplex House | 연립다세대 |
| Officetel | 오피스텔 |
Spring Boot 3.1
JPA, QueryDSL
MySQL, hibernate-spatial
Docker, docker-compse
[ 활용 링크 ]
- 국토교통부_아파트 매매 실거래가 자료
- 국토교통부_아파트 전월세 실거래가 자료
- 국토교통부_단독/다가구 매매 실거래가 자료
- 국토교통부_단독/다가구 전월세 실거래가 자료
- 국토교통부_연립다세대 매매 실거래가 자료
- 국토교통부_연립다세대 전월세 실거래가 자료
- 국토교통부_오피스텔 매매 실거래가 자료
- 국토교통부_오피스텔 전월세 실거래가 자료
[ API Response 분석 ]
| 항목 | 아파트 전월세 | 아파트 매매 | 단독다가구 전월세 | 단독다가구 매매 | 오피스텔 전월세 | 오피스텔 매매 | 연립다세대 전월세 | 연립다세대 매매 |
|---|---|---|---|---|---|---|---|---|
| umdNm (법정동) | o | o | o | o | o | o | o | o |
| jibun (지번) | o | o | o | o | o | o | ||
| sggNm (시군구) | o | o | ||||||
| dealAmount (거래금액) | o | o | o | o | ||||
| deposit (보증금) | o | o | o | o | ||||
| monthlyRent (월세) | o | o | o | o | ||||
| houseType (단독 or 다가구) | o | o | ||||||
| aptNm (아파트명) | o | o | ||||||
| offiNm (오피스텔명) | o | o | ||||||
| mhouseNm (단지명) | o | o |
[ 활용 링크 ]
[ 활용 방법 ]
공공데이터 포털의 주택 실거래가 API 갱신 주기에 맞춰 스케줄러를 통해 1달 단위로 주택 데이터 갱신
- 공공데이터 포털의 decoding-key, 네이버 클라우드의 client-id, client-secret 발급
- resources/applciation.yml에 저장
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/residence_db?useSSL=false&allowPublicKeyRetrieval=true username: root password: 1234 jpa: hibernate: ddl-auto: create show-sql: true properties: hibernate.format_sql: true hibernate.dialect: org.hibernate.dialect.MySQL8Dialect data: decoding-key: {decoding-key} apartment-rent: endpoint: http://apis.data.go.kr/1613000/RTMSDataSvcAptRent/getRTMSDataSvcAptRent apartment-trade: endpoint: http://apis.data.go.kr/1613000/RTMSDataSvcAptTrade/getRTMSDataSvcAptTrade detached-house-rent: endpoint: http://apis.data.go.kr/1613000/RTMSDataSvcSHRent/getRTMSDataSvcSHRent detached-house-trade: endpoint: http://apis.data.go.kr/1613000/RTMSDataSvcSHTrade/getRTMSDataSvcSHTrade multiplex-house-hold-rent: endpoint: http://apis.data.go.kr/1613000/RTMSDataSvcRHRent/getRTMSDataSvcRHRent multiplex-house-hold-trade: endpoint: http://apis.data.go.kr/1613000/RTMSDataSvcRHTrade/getRTMSDataSvcRHTrade officetel-rent: endpoint: http://apis.data.go.kr/1613000/RTMSDataSvcOffiRent/getRTMSDataSvcOffiRent officetel-trade: endpoint: http://apis.data.go.kr/1613000/RTMSDataSvcOffiTrade/getRTMSDataSvcOffiTrade naver-maps: endpoint: https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode client-id: {client-id} client-secret: {client-secret}
- 프로젝트 루트 디렉토리 이동
- docker compose 실행
docker-compose up --build -d
| 테스트 클래스 | 기능 |
|---|---|
| DataApiTest | 공공데이터 포털 API를 통한 주택 실거래가 조회 |
| NaverMapsApiTest | 주소(읍면동 + 지번)을 위치(위도, 경도)로 변환 |
| IntegrationTest | 공공데아터 포털 API + 네이버 지도 API |
| ResidenceSearchServiceTest | 필터링 검색 |
| ScenarioTest | 특정 주택에 대한 정보를 직접 저장 후 필터링 검색 |
| 변수 | 의미 |
|---|---|
| lawdCd | 법정동 코드 |
| dealYm | 계약 년/월 |
| radius | 거리m (검색 조건) |
| assets | 자산 (검색 조건) |
| loan | 대출금액 (검색 조건) |
| minMonthlyRent | 최소 월세 (검색 조건) |
| maxMonthlyRent | 최대 월세 (검색 조건) |





