- 고객이 '집'을 '사'려고 할 때, 사용자 맞춤형 주택 검색 기능을 제공해주는 '집사' 서비스
- 공공데이터 포털 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 | 최대 월세 (검색 조건) |