- ์กฐ์ฌ์ผ: 2026-07-18
- ๋ชฉ์ : OffWay๊ฐ ๋์ด์ฌ ๋ชจ๋ ์ธ๋ถ ๋ฐ์ดํฐ์ ๋ฐ๊ธ์ฒยท์ธ์ฆยท์๋ํฌ์ธํธยท๊ฐ์ฉ ๋ฐ์ดํฐ๋ฅผ ํ๊ณณ์. ์ด ๋ฌธ์๊ฐ ๊ณง (1) ํ์๊ฐ์ /ํค ๋ฐ๊ธ ์ฒดํฌ๋ฆฌ์คํธ, (2) ์ฐ๋ฆฌ๊ฐ ์กฐํฉํ ๋ฐ์ดํฐ ์ ์ฒด ๋ชฉ๋ก.
- ์ ๋ต: ๋ฏธ๋ฆฌ ์ ๋ถ ํ๋ณดยท์ ์ฌ(๋ผ์ด๋ธ API + ์ ์ ์๋ฉ) ํด๋๊ณ ์กฐํฉํด ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
โ ๏ธ ์ ๋ขฐ๋ ํ๊ธฐ: ์๋ ์๋น์๋ ์กฐ์ฌ ๊ธฐ๋ฐ์ด๋ฉฐ ์ผ๋ถ ์คํผ๋ ์ด์ ๋ช ยทํ๋ผ๋ฏธํฐ ์ฒ ์๋ ํ์ฉ์ ์ฒญ ํ ๊ฐ ์์ธํ์ด์ง์ ํ์ฉ๊ฐ์ด๋/Swagger๋ก ์ต์ข ํ์ ํ์. "์ถ์ " ํ์๋ ํญ๋ชฉ ์ฃผ์.
| # | ํฌํธ | URL | ์ปค๋ฒํ๋ ๋ฐ์ดํฐ | ์ธ์ฆ ๋ฐฉ์ |
|---|---|---|---|---|
| 1 | ๊ณต๊ณต๋ฐ์ดํฐํฌํธ data.go.kr | https://www.data.go.kr | ํน์ผ์ ๋ณด ยท TourAPI ยท ๊ด๊ด๋น ๋ฐ์ดํฐ ยท TAGO(๋ฒ์ค/์ด์ฐจ) ยท ์ฝ๋ ์ผ ยท ์ํ์ธ๊ตฌ(ํ์ผ) | ๊ณ์ 1๊ฐ + API๋ณ ํ์ฉ์ ์ฒญ โ serviceKey |
| 2 | SK openapi.sk.com | https://openapi.sk.com | TMAP ๊ฒฝ๋ก/๊ฒฝ์ ์ง ์ต์ ํ | ์ฑ ๋ฑ๋ก โ appKey(ํค๋) |
| 3 | (์ ํ) ํต๊ณ์ฒญ SGIS | https://sgis.kostat.go.kr/developer | ์ผ์์ค ์ธ๊ตฌยทํต๊ณ(์ํ์ธ๊ตฌ ๋ณด๊ฐ์ฉ) | key+secret โ accessToken |
data.go.kr ์๋น์คํค ํต์ฌ ํจ์ : ๋ฐ๊ธ ํ๋ฉด์ Encoding ํค / Decoding ํค ๋ ์ข
๋ฅ๊ฐ ๋์จ๋ค. HTTP ํด๋ผ์ด์ธํธ๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์๋ ์ธ์ฝ๋ฉํ๋ฉด Decoding ํค, ์๋๋ฉด Encoding ํค๋ฅผ ์ด๋ค. ์๋ชป ์ฐ๋ฉด SERVICE_KEY_IS_NOT_REGISTERED_ERROR. โ application secret์ผ๋ก ๋ ํค ๋ค ๋ณด๊ดํ๊ณ , ํ์ชฝ ์คํจ ์ ๋ฐ๋๋ก ์๋.
- ๋ฐ๊ธ: data.go.kr ๋ฐ์ดํฐ์
15012690
ํ๊ตญ์ฒ๋ฌธ์ฐ๊ตฌ์_ํน์ผ ์ ๋ณดโ ํ์ฉ์ ์ฒญ (์๋์น์ธ) - Base:
https://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService - ์คํผ๋ ์ด์
:
getRestDeInfo(๊ณตํด์ผ+๋์ฒด๊ณตํด์ผ โ ์ด๊ฑธ ์ฌ์ฉ),getHoliDeInfo(๊ตญ๊ฒฝ์ผ),getAnniversaryInfo,get24DivisionsInfo - ํ๋ผ๋ฏธํฐ:
serviceKey,solYear(ํ์),solMonth(๊ถ์ฅ, ์๋ณ ๋ฐ๋ณต ํธ์ถ ์์ ),_type=json,numOfRows,pageNo - ์๋ต ํ๋:
locdate(YYYYMMDD),dateName(์ "๋์ฒด๊ณตํด์ผ"),isHoliday(Y/N),dateKind - ํ๋: ๋ฌด๋ฃ, ๊ฐ๋ฐ๊ณ์ ์ผ 10,000๊ฑด(์ถ์ )
- ํจ์ : ๋์ฒด๊ณตํด์ผ์ ๋ณ๋ ํ๋๊ทธ ์์ด
dateName="๋์ฒด๊ณตํด์ผ"๋ก ํ๋ณ. ๋ฏธ๋ ์ฐ๋๋ ์ง์ ์ ๋๋ฝ ๊ฐ๋ฅ. - OffWay ์ฉ๋: LNT ์ฐ์ถ ยท ์๋์์น ์ฐํด ํ์ง์ ๊ธฐ๋ฐ.
-
๋ฐ๊ธ: data.go.kr ๋ฐ์ดํฐ์ 15101578
ํ๊ตญ๊ด๊ด๊ณต์ฌ_๊ตญ๋ฌธ ๊ด๊ด์ ๋ณด ์๋น์ค_GWโ ํ์ฉ์ ์ฒญ (์๋์น์ธ) -
Base(๊ถ์ฅ v2, HTTPS):
https://apis.data.go.kr/B551011/KorService2(๋ ๊ฑฐ์KorService1์ ๋จ๊ณ์ ํ์ง) -
์คํผ๋ ์ด์ :
areaBasedList2(์ง์ญ๊ธฐ๋ฐ ๋ชฉ๋ก โ ํต์ฌ),locationBasedList2(์๊ฒฝ๋+๋ฐ๊ฒฝ),searchKeyword2,detailCommon2(์ฃผ์ยท์ขํยท๊ฐ์),detailIntro2(์ด์์๊ฐยทํด๋ฌด์ผ),detailImage2,areaCode2(์ง์ญ์ฝ๋ ์กฐํ) -
ํ๋ผ๋ฏธํฐ:
serviceKey,MobileOS(ETC),MobileApp(offway),_type=json,numOfRows,pageNo,arrange,areaCode,sigunguCode,contentTypeId,cat1/2/3 -
contentTypeId: 12=๊ด๊ด์ง ยท 14=๋ฌธํ์์ค ยท 15=์ถ์ ๊ณต์ฐํ์ฌ ยท 25=์ฌํ์ฝ์ค ยท 28=๋ ํฌ์ธ ยท 32=์๋ฐ ยท 38=์ผํ ยท 39=์์์
-
์๋ต ํ๋:
contentid,title,addr1,mapx(๊ฒฝ๋)/mapy(์๋),areacode,sigungucode,firstimage,tel; detailIntro๋usetime/restdate(์ด์ยทํด๋ฌด, ์์ ํ ์คํธ) -
ํ๋: ๋ฌด๋ฃ, ๊ฐ๋ฐ๊ณ์ ์ผ 1,000๊ฑด (์ด์ ์ ํ ์ ์ฆ๋)
-
โ ๏ธ ์ต๋ ํจ์ โ ์ง์ญ์ฝ๋:sigunguCode๋ KTO ์ ์ฉ ์๋ฒ(๋ฒ์ ์๊ตฐ๊ตฌ ์ฝ๋ ์๋)์ด๊ณareaCode์ ํจ๊ป๋ง ์ ํจ. โ ๋จผ์ areaCode2๋ก (areaCode,sigunguCode)โ์ง๋ช ๋งคํ ํ ์ด๋ธ์ ํ๋ณดํ ๋ค ์ธ๊ตฌ๊ฐ์์ง์ญ 89๊ณณ ์ง๋ช ๊ณผ ๋งค์นญ. ์ง๋ช ๊ธฐ์ค ์กฐ์ธ. -
OffWay ์ฉ๋: ์ธ๊ตฌ๊ฐ์์ง์ญ ๊ด๊ด์งยท์๋ฐยท์์์ ํ์ถ, ์ด์์๊ฐ/ํด๋ฌด ๊ธฐ๋ฐ ์ผ์ ์์ฑ.
-
์ค์ธก(2026-08-21 ยท 89๊ณณ ์ ์,
areaBasedList289์ฝ) โ ์ง์ญ ์ฅ์ ํ(#304)์ ๊ทผ๊ฑฐ๋ค.๊ฐ ์ง์ญ๋น ๋ฑ๋ก ๊ฑด์ ์ต์ 16 ยท ์ค์๊ฐ 57 ยท ์ต๋ 97 ์ฌ์ง ๋ณด์ ์จ ์นฉ๋ณ 84~95% ( firstimage)์ฌ์ง ์๋ ์ฅ์ 10๊ฑด ์ด์ 89/89๊ณณ ์นฉ๋ณ๋ก ์ฌ์ง ์๋ ์ฅ์๊ฐ ํ๋๋ผ๋ ์๋ ์ง์ญ โ ๊ด๊ด์ง 89/89 ยท ๋ง์ง 89/89 ยท ์๋ฐ 87/89 ยท ์ฒดํ 86/89. (์๋ฐยท๋ง์ง์ ์ ์ฒดํ์ 1์ฝ๋ง ์ด ํํ์ด๋ค. ๋ฐฐ์น๋ ํ์ ๋ณ 2์ฝ์ ๋ ๋ถ๋ฅธ๋ค.)
๊ตญ๊ฐ์ ์ฐ ๋ณด์ถฉ์ ํ์ ์๋ค. 89๊ณณ ์ ๋ถ๊ฐ ์ฌ์ง ์๋ ์ฅ์๋ฅผ 10๊ฑด ์ด์ ๋ค๊ณ ์์ด ํ๋ฉด ์ํ(10๊ฐ)์ ์ฑ์ด๋ค. (์ ํ์
์ต์ 16์ ๋ฑ๋ก ๊ฑด์๋ผ ์ฌ์ง ๊ฑด์์ ๋ค๋ฅด๋ค โ ์ฌ์ง ๋ณด์ ์จ์ด 84~95% ์ด๋ฏ๋ก ๊ทธ๋ณด๋ค ์๋ค.) -
์ค์ธก(2026-08-21 ยท ํ๋ณธ 40๊ฑด) โ ์นดํ ๊ณ ๋ฆฌ๋ณ ๋ถ๊ฐ ์ ๋ณด ์ฑ์๋ฅ . ํ ์ฅ์ ์นด๋ ๋ถ์ (#305)์ ๊ทผ๊ฑฐ๋ค.
๋์ ํ๋ ์ฑ์๋ฅ ๋ง์ง detailIntro2firstmenu(๋ํ๋ฉ๋ด) ยทopentimefood100% (19/19) ์๋ฐ detailIntro2roomcount47% ยทcheckintime52%์ ๋ฐ ์๋ฐ detailInfo2๊ฐ์ค ์๊ธ( roomoffseasonminfee1๋ฑ)21% (4/19) 1์ธ ๊ฐ๊ฒฉ ํ๋๋ ์์์ ์ ์์ ์๋ค. ์์์
1์ธ 9,000์์ ๋ํ๋ฉ๋ด๋ก ๋์ฒดํด์ผ ํ๋ค. ์๋ฐ ์๊ธ์detailInfo2๋ฅผ POI ๋ง๋ค ๋ ๋ถ๋ฌ์ผ ํ๋๋ฐ ์ฑ์๋ฅ ์ด 21% ๋ผ ๋น์ฉ์ด ๊ฐ์ด์น๋ฅผ ๋๋๋ค.
- ๋ฐ๊ธ: data.go.kr ๋ฐ์ดํฐ์
15101972
ํ๊ตญ๊ด๊ด๊ณต์ฌ_๊ด๊ด๋น ๋ฐ์ดํฐ ์ ๋ณด์๋น์ค_GWโ ํ์ฉ์ ์ฒญ (15101578๊ณผ ๋ณ๊ฐ ์ ์ฒญ) - Base:
https://apis.data.go.kr/B551011/DataLabServiceโ ํ์ธ - ์คํผ๋ ์ด์
:
metcoRegnVisitrDDList(๊ด์ญ๋ณ ์ผ๋ณ ๋ฐฉ๋ฌธ์์) ยทlocgoRegnVisitrDDList(๊ธฐ์ด ์๊ตฐ๊ตฌ๋ณ โ OffWay 89์ ์ฌ์ฉ). ๋ ๋ค ์คํธ์ถ ์ฑ๊ณต(resultCode0000). - ํ๋ผ๋ฏธํฐ:
serviceKeyยทMobileOS(ETC)ยทMobileApp(offway)ยท_type=jsonยทstartYmd/endYmd(YYYYMMDD)ยทpageNoยทnumOfRows. (์ง์ญ ํํฐ param ์์ด ๊ธฐ๊ฐ ์ ์ฒด ๋ฐํ โ ํด๋ผ๊ฐ ์๊ตฐ๊ตฌ๋ก ๋งค์นญ) - ์๋ต ํ๋(locgo):
signguCode(11110)ยทsignguNm(์ข ๋ก๊ตฌ)ยทdaywkDivCd/daywkDivNm(์์ผ)ยทtouDivCd/touDivNm(1=ํ์ง์ธยท2=์ธ์ง์ธยท3=์ธ๊ตญ์ธ)ยทtouNum(๋ฐฉ๋ฌธ์์, ๋ฌธ์์ด)ยทbaseYmd - ํ๋: ๋ฌด๋ฃ, ๊ฐ๋ฐ๊ณ์ ์ผ 1,000๊ฑด
- ํจ์ โ (๋งค์นญ ํค):
signguCode๋ ๋ฒ์ ์๊ตฐ๊ตฌ์ฝ๋(ํ์ ํ์ค์ฝ๋)๋ผ TourAPI KTO ์ฝ๋์ ๋ค๋ฆ โ region ์legal_code์ปฌ๋ผ์ ๋ฐ๋ก ๋๊ณ ์ฝ๋๋ก ๋งค์นญํ๋ค(#65).์ ํ๊ธฐํ๋ค. ์ง๋ช ์ ์ ๊ตญ์์ ๊ฒน์น๋ค โ ๋๊ตฌ 6๊ณณยท์ค๊ตฌ 6๊ณณยท์๊ตฌ 5๊ณณยท๋จ๊ตฌ 4๊ณณยท๋ถ๊ตฌ 4๊ณณยท๊ณ ์ฑ๊ตฐ 2๊ณณ(2026-06 ์คํธ์ถ, 268๊ฐ ์๊ตฐ๊ตฌ ๊ธฐ์ค). ์ฐ๋ฆฌ 89๊ณณ ์ค ๋ถ์ฐ ๋๊ตฌยท๋ถ์ฐ ์๊ตฌยท๋๊ตฌ ๋จ๊ตฌยท๋๊ตฌ ์๊ตฌยท๊ฐ์ ๊ณ ์ฑ๊ตฐ(51820)ยท๊ฒฝ๋จ ๊ณ ์ฑ๊ตฐ(48820) 6๊ณณ์ด ๊ฑธ๋ ค, ์๋ก ๋ค๋ฅธ ์ง์ญ์ ๋ฐฉ๋ฌธ์๊ฐ ํ ๋ฒํท์ ํฉ์ฐ๋๋ค(๋ถ์ฐ ๋๊ตฌ = ์ ๊ตญ ๋๊ตฌ 6๊ณณ์ ํฉ).signguNm(์ง๋ช )์ผ๋ก ๋งค์นญregion.legal_code์ ์ ๋ณธ์ ์ด ์๋ต์signguCode์์ฒด๋ค. ๋งค์นญ ์๋์์ ๊ทธ๋๋ก ๋ฐ์์ผ 89๊ณณ ์ ๋ถ ๋งค์นญ์ด ๋ณด์ฅ๋๋ค.
- ํจ์ โก(๋ฐํ ์ฃผ๊ธฐ): ์๊ฒฐ๋ ๋ฌ๋ง ์ ๋จ์๋ก ๋ฐํ๋๋ค. "N์ผ ์ง์ฐ"์ด ์๋๋ค โ 2026-07-30 ๊ธฐ์ค 6์(24,120๊ฑด)๊น์ง ์๊ณ 7์์ 0๊ฑด. ๊ณ ์ ์ผ์ ์ง์ฐ์ ๊ฐ์ ํ๋ฉด ๊ด์ธก ์ฐฝ์ด ๋ฏธ๋ฐํ ๊ตฌ๊ฐ์ ๊ฑธ๋ ค ์กฐํ๊ฐ
resultCode=0000+ ๋น ๊ฒฐ๊ณผ๋ก ์กฐ์ฉํ ์ฑ๊ณตํ๊ณ , ์ ์ง์ญ ๋ฐฉ๋ฌธ์๊ฐ 0์ด ๋ผ ๋ญํน์ด ๋ฌด์๋ฏธํด์ง๋ค(๊ฒฝ๊ณ ๋ก๊ทธ๋ ์ ๋จ์). โ ์ง๋๋ฌ๋ถํฐ ์์ํด ๋น๋ฉด ์ด์ ๋ฌ๋ก ๋ฌผ๋ฌ์ ๋ค. - ํจ์ โข(์๋ต ํฌ๊ธฐ): ์ง์ญ ํํฐ๊ฐ ์์ด ๊ธฐ๊ฐ ์ ์ฒด๊ฐ ๋ด๋ ค์จ๋ค. 268 ์๊ตฐ๊ตฌ ร 3 ๊ตฌ๋ถ ร ์ผ์ โ 7์ผ ์ฝ 1MB / ํ ๋ฌ ์ฝ 4MB. ์ด์
externalWebClient์maxInMemorySize๊ฐ 2MB ๋ผ ํ ๋ฌ์น๋ ๋ฒํผ๋ฅผ ๋๊ธด๋ค. ๊ด์ธก ์ฐฝ์ ๋ฐํ๋ ๋ฌ์ ๋ง์ง๋ง ํ ์ฃผ๋ก ์ก๋ ์ด์ . - ํจ์ โฃ: "๋ฐฉ๋ฌธ์โ ๊ด๊ด๊ฐ" โ ๋ญํน์ ์ธ์ง์ธ+์ธ๊ตญ์ธ๋ง.
- OffWay ์ฉ๋: "ํ์ผ์ ํ์ฐํ ์์ " ํ์ฐ๋ ๋ฑ์งยท์ง์ญ ๋ญํน โ ์ฐจ๋ณํ ํต์ฌ ๋ฐ์ดํฐ.
- ๋ฏธํ์ธ(ํ์): ๊ด๊ด์ง๋ณ ์ง์ค๋ฅ ยทํฅํ ๋ฐฉ๋ฌธ์ ์์ธก์ ๋ณ๋ ์คํผ๋ ์ด์ (#21+ ํ์ ์ ํ์ธ).
-
๋ฐ๊ธ: ๊ด๊ด๋น ๋ฐ์ดํฐ์ ๊ฐ์ ๊ณ์ (15101972)์ผ๋ก ํธ์ถ๋๋ค โ ๋ณ๋ ์ ์ฒญ ์์ด
serviceKey๋ฅผ ๊ทธ๋๋ก ์ด๋ค. -
Base:
https://apis.data.go.kr/B551011/LocgoHubTarService1โ ํ์ธ (1-3 ์DataLabService์ ๋ค๋ฅธ base) -
์คํผ๋ ์ด์ :
areaBasedList1โ ํ ์ง์์ฒด์ ์ค์ฌ ๊ด๊ด์ง๋ฅผ ์์๋ก. ์คํธ์ถ ์ฑ๊ณต(resultCode=0000). -
ํ๋ผ๋ฏธํฐ:
serviceKeyยทMobileOS(ETC)ยทMobileApp(offway)ยท_type=jsonยทareaCd(์๋ 2์๋ฆฌ)ยทsignguCd(์๊ตฐ๊ตฌ 5์๋ฆฌ)ยทbaseYm(YYYYMM)ยทnumOfRowsยทpageNo(ํ์) -
์๋ต ํ๋:
hubRank(์์)ยทhubTatsCd(์๋ณ์)ยทhubTatsNm(๊ด๊ด์ง๋ช )ยทhubCtgryLclsNm(๋๋ถ๋ฅ: ๊ด๊ด์งยท์์ยท์๋ฐ)ยทhubCtgryMclsNm(์ค๋ถ๋ฅ)ยทmapX(๊ฒฝ๋)/mapY(์๋)ยทsignguNmยทbaseYm -
์ค์ธก(2026-08-09, ๊ณต์ฃผ์ 44150 ยท baseYm=202606)
ํญ๋ชฉ ๊ฐ ์๋ต์๊ฐ n=20 ยท min 0.106s ยท p50 0.123s ยท p90 0.135s ยท p95 0.137s ยท max 0.139s ์๋ต ํฌ๊ธฐ numOfRows=30โ 9.5KB ยทnumOfRows=100โ 31KBtotalCount ์ง์์ฒด๋น 51~100๊ฑด(ํ๋ณธ 5๊ณณ: ๊ณต์ฃผ 100ยท์๋ 51ยท๊ฐ์๊ณ ์ฑ 100ยท๊ฒฝ๋จ๊ณ ์ฑ 100ยท์๊ตฌ 82) ํ์ด์ง ์ํ์ด 100๊ฑด์ด๋ผ numOfRows=100์ด๋ฉด 1ํ์ด์ง๋ก ๋๋๋ค โ ํ์ด์ง ์ํ๊ฐ ํ์ ์๋ค -
timeout ๊ทผ๊ฑฐ: ์ด๋ํฐ๋ 6์ด๋ฅผ ์ด๋ค. ์ ์ p95(0.14์ด)์ 40๋ฐฐ๋ก ํฌ๊ฒ ์ก์ ๊ฐ์ธ๋ฐ, ํ๋ณธ์ด 20ํ๋ผ p99 ๋ฅผ ๋ผ ์ ์์ด ๊ผฌ๋ฆฌ๋ฅผ ๋ณด์์ ์ผ๋ก ๋๋ค. ์ด ๊ฒฝ๋ก๋ ํ๋ฃจ ํ ๋ฒ ๋๋ ๋ฐฐ๊ฒฝ ๋ฐฐ์น๋ผ ์ง์ฐ์ด ์ฌ์ฉ์์๊ฒ ๋ฟ์ง ์๋๋ค โ 89๊ณณ ์์ฐจ ์ต์ ์ด 534์ด์ฌ๋ ์๋ฌด๋ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค. ์์ฒญ ๊ฒฝ๋ก์ ๋ถ์ผ ์ผ์ด ์๊ธฐ๋ฉด ์ด ๊ฐ์ ๋ค์ ์ฌ์ผ ํ๋ค.
-
ํ๋: 1-3 ๊ณผ ๊ฐ์ ๊ณ์ ์ด๋ผ ์ผ 1,000๊ฑด์ ๊ณต์ ํ๋ค. ๊ฐฑ์ 1ํ๊ฐ 89๊ฑด(+๋ฐํ์ ํ์ ์ต๋ 9๊ฑด)์ด๋ฏ๋ก ํ๋ฃจ ํ ๋ฒ์ด๋ฉด ์ฌ์ ๊ฐ ์๋ค. ์์ฒญ ๊ฒฝ๋ก์์ ๋ถ๋ฅด๋ฉด ์ ๋๋ ์ด์ ๊ฐ ์ด๊ฒ์ด๋ค(#193).
-
ํจ์ โ (์ฝ๋ ์ฒด๊ณ):
areaCd/signguCd๋ ๋ฒ์ ๋ ์ฝ๋๋ค โ ๊ณต์ฃผ์๋44/44150. TourAPI ์ KTO ์ฝ๋(34/1)๋ฅผ ๋ฃ์ผ๋ฉดresultCode=0000์totalCount=0์ด ์จ๋ค(์ค์ธก). ์ฑ๊ณต ์ฝ๋๋ผ ์กฐ์ฉํ ๋น ๊ฒฐ๊ณผ๊ฐ ๋๋ฏ๋ก ํนํ ์ํํ๋ค. -
ํจ์ โก(
pageNoํ์): ๋น ๋จ๋ฆฌ๋ฉดresultCode=11NO_MANDATORY_REQUEST_PARAMETERS_ERROR1(pageNo)์ธ๋ฐ, ๊ทธ ์๋ต๋งresponse๋ํผ ์์ด ์ต์์์ ์ฝ๋๋ฅผ ๋ด์ ์จ๋ค(์ค์ธก ์๋ฌธ:{"responseTime":"...","resultCode":"11","resultMsg":"..."}). ๋ํผ๋ง ๋ณด๊ณ ํ์ฑํ๋ฉด ์ฝ๋๊ฐ ๋น ๋ฌธ์์ด์ด ๋ผ "๊ฒฐ๊ณผ ์์" ๊ณผ ๊ตฌ๋ถ๋์ง ์๋๋ค โ ์กฐ์ฌ ์ค ์ค์ ๋ก ์ด๊ฑธ๋ก "์ต์ ์์ด ์๋ค" ๊ณ ์๋ชป ์ฝ์๋ค. -
ํจ์ โข(1๊ฑด์ด๋ฉด ๋จ์ผ ๊ฐ์ฒด):
items.item์ด ๋ฐฐ์ด์ด ์๋๋ผ ๊ฐ์ฒด๋ก ์จ๋ค. ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉดitems๊ฐ ๋น ๋ฌธ์์ด์ด๋ค. ๋ ๋ค 1-2ยท1-3 ๊ณผ ๊ฐ์ data.go.kr ๊ณตํต ํจ์ . -
ํจ์ โฃ(1์๊ฐ ๋ํ ์ฌ์ง๊ฐ์ ์๋): ๋๋ถ๋ฅ๊ฐ
์๋ฐยท์์์ธ ๊ฒฝ์ฐ๊ฐ ์๋ค โ ์ ์ ๊ตฐ 1์๋ ์ฝ๋, 2์๋ ์นด์ง๋ ธ๋ค. ๋ฐ์ดํฐ๋ ๋ง์ง๋ง ์ง์ญ ์นด๋์ ๊ฑธ ๊ทธ๋ฆผ์ด ์๋๋ผ ๋๋ถ๋ฅ๋ก ๊ฑธ๋ฌ์ผ ํ๋ค. -
๋ฐํ ์ฃผ๊ธฐ: 1-3 ๊ณผ ๊ฐ์ ์ ๋จ์. 2026-08-09 ๊ธฐ์ค 202607 ๊น์ง ๋ฐํ๋จ(ํ์ธ). ์ด๋ฒ ๋ฌ์ ์์ง์ด๋ฏ๋ก ์ง๋๋ฌ๋ถํฐ ์์ํด ๋น๋ฉด ๋ฌผ๋ฌ์ ๋ค.
-
OffWay ์ฉ๋: ์ง์ญ ๋ํ๋ฅผ "์ ๋ชฉ์ ์ฒซ POI"(#182)๊ฐ ์๋๋ผ ์ค์ ์ด๋ ๋ฐ์ดํฐ์ ์ค์ฌ์ฑ์ผ๋ก ์ ํ๋ค. ๊ณต์ฃผ์ 1์ = ๊ณต์ฐ์ฑ โ TourAPI ์๋ ๋ฑ๋ก์กฐ์ฐจ ์์ด ๊ธฐ์กด ๊ตฌ์กฐ๋ก๋ ์ฐพ์ ์ ์๋ ๊ณณ์ด๋ค.
-
๋ฐ๊ธ: ๊ด๊ด๋น ๋ฐ์ดํฐ์ ๊ฐ์ ๊ณ์ (15101972). ๋ณ๋ ์ ์ฒญ ์์ด
serviceKey๋ฅผ ๊ทธ๋๋ก ์ด๋ค. -
Base:
https://apis.data.go.kr/B551011/PhotoGalleryService1โ ํ์ธ -
์คํผ๋ ์ด์ :
galleryList1โ ์ ๋ ๋ชฉ๋ก. ์คํธ์ถ ์ฑ๊ณต(resultCode=0000).์ ํธ์ถ์ด ์คํจํ๋ค. ์ ๋์ DB ๋ก ๋ด๋ฆฌ๋ฉด ํค์๋ ๊ฒ์์ด ํ์ ์์ด ๋ ํ์ง ์์๋ค.galleryKeywordList1
-
ํ๋ผ๋ฏธํฐ:
serviceKeyยทMobileOS(ETC)ยทMobileApp(offway)ยท_type=jsonยทarrangeยทnumOfRowsยทpageNo -
์๋ต ํ๋:
galContentIdยทgalTitleยทgalWebImageUrlยทgalPhotographyMonth(YYYYMM)ยทgalPhotographyLocationยทgalPhotographerยทgalSearchKeyword -
์ค์ธก(2026-08-09)
ํญ๋ชฉ ๊ฐ ์ ๋ 6,118๊ฑด ํ์ด์ง numOfRows=1000์ด ๊ทธ๋๋ก ๋ฐ์๋ค์ฌ์ ธ 7ํ์ด์ง๋ก ๋๋๋ค์๋ต ํฌ๊ธฐ 1,000๊ฑด ํ์ด์ง 554KB (3๊ฑด 1.9KB) ์๋ต์๊ฐ 0.18~0.35์ด -
timeout ๊ทผ๊ฑฐ: ์ด๋ํฐ๋ 10์ด. ์ค์ธก 0.35์ด์ 30๋ฐฐ๋ก, ํ๋ณธ์ด ์ ์ด ๊ผฌ๋ฆฌ๋ฅผ ๋ณด์์ ์ผ๋ก ๋๋ค. ๋ถํ ํ ๋๋ ๋ฐฐ๊ฒฝ ์ ์ฌ๋ผ ์ง์ฐ์ด ์ฌ์ฉ์์๊ฒ ๋ฟ์ง ์๋๋ค.
-
maxInMemorySize์ฃผ์: ํ์ด์ง๋น 554KB ๋ผ ์ด์externalWebClient์ํ(2MB) ์์ ๋ ๋ค. ํ์ด์ง ํฌ๊ธฐ๋ฅผ ๋ ํค์ฐ๋ฉด ์ฌ๊ธฐ์ ๊ฑธ๋ฆฐ๋ค. -
ํ๋: 1-3 ๊ณผ ๊ฐ์ ๊ณ์ ์ด๋ผ ์ผ 1,000๊ฑด์ ๊ณต์ ํ๋ค. ์ ๋ ์ ์ฌ๊ฐ 7ํ๋ฟ์ด๋ผ ์ฃผ 1ํ ๊ฐฑ์ ์ผ๋ก ์ถฉ๋ถํ๋ค.
-
โ ๏ธ ํจ์ โ (์ดฌ์ ์์น๊ฐ ์์ ํ ์คํธ):galPhotographyLocation์ ์ ์ ๋ ์ฝ๋๊ฐ ์๋๋ค. ์ค์ธก ๋ถํฌ์์ ์ด๋ฐ ๊ฐ์ด ๋์จ๋ค.์ ๋จ๊ด์ฃผํตํฉํน๋ณ์ 711 ยท ๊ฐ์๋ 581 / ๊ฐ์ํน๋ณ์์น๋ 198 ยท ์ ๋ผ๋ถ๋ 402 / ์ ๋ถํน๋ณ์์น๋ 98 ์์ธ 231 / ์์ธ์ 18 / ์์ธํน๋ณ์ 277 ยท ์ธ์ฒญ๊ด์ญ์ ยท ์ฐ๊ด์ญ์ ยท ์ ๋ถํน๋ณ์์น๋๋ (์คํ) ์ ์น๋ฐ์ ยท FNC ยท ์ ์ฃผ์๋น ยท ๋ฏผ๊ฐ๋คํ (์๋ ์๋ฆฌ์ ์ํธ๋ช )โ ์๋๋ฅผ ํจ๊ป ์ ๊ทํํ์ง ์์ผ๋ฉด ์กฐ์ฉํ ํ๋ฆฐ๋ค. ์๊ตฐ๊ตฌ๋ช ๋ง์ผ๋ก ์ธ๋ฉด ๋๊ตฌ ๋จ๊ตฌ๊ฐ 104๊ฑด์ผ๋ก ๋ถํ์๋ค(์ ๊ตญ ๋จ๊ตฌ์ ํฉ). ์ ๊ทํ ํ 6๊ฑด. 1-3 ์ ํจ์ โ ๊ณผ ๊ฐ์ ๊ณ์ด์ด๋ค.
-
ํจ์ โก(์ ๋ชฉ์ด ์ฅ์๋ช ์ด ์๋ ์ ์๋ค):
galTitle์ด "๋ด์ ์ฝ์" ๊ฐ์ ์ํ๋ช ์ธ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ฅ์๋ช ์galSearchKeyword์๋ง ์์ ์ ์์ด ๋ ๋ค ๋ด์ผ ํ๋ค โ ์ ๋ชฉ "๊ธ๊ฐ์ฒ ๊ต" ์ฌ์ง์ ํค์๋์ "๊ณต์ฐ์ฑ" ์ด ๋ค์ด ์๋ค. -
ํจ์ โข(1๊ฑด์ด๋ฉด ๋จ์ผ ๊ฐ์ฒดยท๊ฒฐ๊ณผ ์์ผ๋ฉด ๋น ๋ฌธ์์ด): 1-2ยท1-3 ๊ณผ ๊ฐ์ data.go.kr ๊ณตํต ํจ์ .
-
โ ๏ธ ํจ์ โฃ(์ฃฝ์ ์ด๋ฏธ์ง URL):galWebImageUrl์ ์๋น์๊ฐ 404 ๋ค โ ์ฐ๋ฆฌ 89๊ณณ์ ๋ถ์ 1,790์ฅ ์ค 345์ฅ(19.3%). ๊ฒฝ๋ก๋ก๋ ๋ชป ๊ฐ๋ฅธ๋ค(๊ฐ์cms2/website/์ ์ฐ ๊ฒ๊ณผ ์ฃฝ์ ๊ฒ์ด ์์ฌ ์๋ค). ํ์ธํ์ง ์๊ณ ์ฐ๋ฉด ์ง์ญ ์นด๋ 15๊ณณ์ ๊นจ์ง ์ด๋ฏธ์ง๊ฐ ๋๊ฐ๋ค.- ์์กด ํ์ธ์ HEAD ๋ฅผ ์ฐ๋ฉด ์ ๋๋ค. ์ด ํธ์คํธ๋ HEAD ์ 405 ๋ฅผ ๋๋ ค์ค ์ด์ ์๋ URL ๋ ์ฃฝ์ ๊ฒ์ผ๋ก ํ์ ๋๋ค(์ฒ์ ์ฐ 83๊ฐ๊ฐ ์ ๋ถ 405 ์๋ค). GET ์ผ๋ก ํ์ธํ๊ณ ๋ณธ๋ฌธ์ ๋ฒ๋ฆฐ๋ค.
-
OffWay ์ฉ๋: ์ง์ญ ๋ํ ์ฌ์ง(#196). ์ค์ฌ ๊ด๊ด์ง(1-3-1) ์์์ ์ด์ด "๊ทธ ์ง์ญ์ ๋ํ ๋ช ์ ์ฌ์ง"์ ๊ณ ๋ฅธ๋ค.
-
์ปค๋ฒ๋ฆฌ์ง ์ค์ธก(์ฃฝ์ URL ์ ์ธ ํ): 6,118๊ฑด ์ค 1,790๊ฑด์ด ์ฐ๋ฆฌ 89๊ณณ์ ๋ถ๊ณ , ๊ทธ์ค ์ด์ ์๋ ๊ฒ์ 1,445๊ฑด์ด๋ค. ์ฌ์ง์ด ํ ์ฅ๋ ์๋ ๊ณณ์ ์ฅ์๊ตฐ 1๊ณณ.
์ฌ๋ค๋ฆฌ ๋จ๊ณ ์ง์ญ ์ โ ์ค์ฌ ๊ด๊ด์ง(1-3-1) ร ๊ฐค๋ฌ๋ฆฌ 82๊ณณ โก ๊ทธ ์ง์ญ ๊ฐค๋ฌ๋ฆฌ ์ฌ์ง(5์ฅ ์ด์ ๋ณด์ ) 4๊ณณ โ ๋ถ์ฐ ๋๊ตฌยท์ธ์ฒ ์น์ง๊ตฐยท์ ๋จ ์์๊ตฐยท๊ฒฝ๋จ ์๋ น๊ตฐ โข TourAPI ํด๋ฐฑ 3๊ณณ โ ์ ๋ถ ์ฅ์๊ตฐยท๊ฒฝ๋ถ ์์๊ตฐยท๊ฒฝ๋ถ ์์ฑ๊ตฐ โก๋ฅผ ๋ ์ด์ : ์ค์ฌ ๊ด๊ด์ง ์ด๋ฆ๊ณผ ๊ฐค๋ฌ๋ฆฌ ์ ๋ชฉ์ด ์ ๋ง์๋ ๊ทธ ์ง์ญ์ ์ธ ์ฌ์ง์ด ์๋ ๊ฒ์ ์๋๋ค. ์์๊ตฐ์ ์ค์ฌ ๊ด๊ด์ง 3์๊ฐ ๋๊ฐ์ฌ์ธ๋ฐ ์ ์ ์์์ ๋ํํ๋ ์์ถ์ฐ ์ฌ์ง์ด 13์ฅ ์์๋ค. ๋ค๋ง ํ๋ ์ฅ๋ฟ์ธ ๊ณณ(์์๊ตฐ์ ์ ์ผํ ์ฌ์ง์ '๊ฐ๋ง')์ ์ฐ์ฐํ ์ฐํ ์ชฝ์ ๊ฐ๊น์ TourAPI ๋ก ๋ด๋ ค๋ณด๋ธ๋ค.
- Base ๊ณตํต:
https://apis.data.go.kr/1613000/...(serviceKey ๊ฐ URL ์ ์ค๋ฆฌ๋ฏ๋ก HTTPS ํ์ โ ํ๋ฌธ ์ ์ก ๊ธ์ง) ยท ์๋ต ๋ํผresultCode/items>item[] - ํ๋: ๋ฌด๋ฃ, ๊ฐ๋ฐ๊ณ์ ์ผ 10,000๊ฑด
โ ๏ธ ๊ฒฝ๋ก ๋ช ๋ช โ ์๋น์ค๋ง๋ค ๋ค๋ฅด๋ค: data.go.kr TAGO ๋ ์๋น์ค๋ง๋ค baseยทop casing ์ด ์ ๊ฐ๊ฐ์ด๋ค. ๋ฒ์ค๋ฅ๋...InqireService+ ์๋ฌธ์ op(getCtyCodeList)๋ค. ์ด์ฐจ๋ ์ค์ธก ํ์ : ์งง์ base(TrainInfo) + ๋๋ฌธ์ G op(GetStrtpntAlocFndTrainInfo). ๊ณ ์๋ฒ์คยท์์ธ๋ฒ์คยท์งํ์ฒ ์ ์์ง ์ถ์ (์ด์ฐจ์ ๊ฐ์ ๊ท์น์ผ ๊ฒ์ผ๋ก ๋ณด์ด๋ ์คํธ์ถ ๋ฏธํ์ธ). ํ๋ฆฐ ์กฐํฉ์ ๊ฒ์ดํธ์จ์ด๊ฐ404 "API not found"โ 404 ์ ํ๋ฐ์ด ๋ฏธ๊ตฌ๋ ์ด ์๋๋ผ ๊ฒฝ๋กยทcasing ์คํ์๋ค.
| ์๋น์ค | ๋ฐ์ดํฐ์ | base | ํต์ฌ op / ํ๋ | ๋น๊ณ |
|---|---|---|---|---|
| ๋ฒ์ค๋์ฐฉ์ ๋ณด(์๋ด) | 15098530 | ArvlInfoInqireService โ
|
getSttnAcctoArvlPrearngeInfoList(์๋ฌธ์) โ arrtime |
nodeId ์ ์กฐํ, ์ค์๊ฐ |
| ๋ฒ์ค์ ๋ฅ์์ ๋ณด | 15098534 | BusSttnInfoInqireService โ
|
getCtyCodeList ๋ฑ(์๋ฌธ์) |
200 |
| ๋ฒ์ค๋ ธ์ ์ ๋ณด | 15098529 | BusRouteInfoInqireService โ
|
๋ ธ์ ยท๊ฒฝ์ ์ ๋ฅ์(์๋ฌธ์) | 200 |
| ๋ฒ์ค์์น์ ๋ณด | 15098531 | BusLcInfoInqireService โ
|
์ค์๊ฐ ์ฐจ๋ ์์น(์๋ฌธ์) | 200 |
| ์ด์ฐจ์ ๋ณด | 15098552 | TrainInfo โ
|
GetStrtpntAlocFndTrainInfo(๋๋ฌธ์ G) ยท GetCtyCodeList ยท GetCtyAcctoTrainSttnList |
200 ์คํธ์ถยทKTX ํ์ธ. SRT ๋ฏธํฌํจ |
| ๊ณ ์๋ฒ์ค์ ๋ณด | 15098522 | ExpBusInfo(์ถ์ ) |
GetExpBusTrminlList(๋๋ฌธ์ ์ถ์ ) |
์ด์ฐจ์ ๊ฐ์ ๊ท์น ์์ |
| ์์ธ๋ฒ์ค์ ๋ณด | 15098541 | SuburbsBusInfo(์ถ์ ) |
(๋๋ฌธ์ ์ถ์ ) | |
| ์งํ์ฒ ์ ๋ณด | โ | SubwayInfo(์ถ์ ) |
(๋๋ฌธ์ ์ถ์ ) | ๋์ ๋ด |
- ์๋ต ํ๋(์ด์ฐจ):
items.item[](๋จ๊ฑด์ด๋ฉดitem๊ฐ์ฒด ํ๋) ยทtraingradename(KTXยทITX-์๋ง์ยท๋ฌด๊ถํ) ยทdepplandtime/arrplandtime(yyyyMMddHHmmss) ยทtrainno. ๋ฏธ์ดํ์ด๋ฉดitems:""(๋น ๋ฌธ์์ด). - ์ญ/์ ๋ฅ์/ํฐ๋ฏธ๋ ID๋ ๊ฐ ๋ชฉ๋ก op(
GetCtyCodeListโGetCtyAcctoTrainSttnList๋ฑ)์ผ๋ก ์ ์กฐํ. ์: ์์ธNAT010000ยท ๋ถ์ฐNAT014445. - OffWay ์ฉ๋: ๋ฐ์ฐจยทํด๊ทผํ ๋ชจ๋ ๋์ฐฉ์๊ฐ, ๊ตํต์๋จ๋ณ ๋์ .
BusSttnInfoInqireService/getCtyCodeList ์คํธ์ถ ๊ฒฐ๊ณผ 138๊ฐ ์ง์์ฒด๋ง ๋ด๋๋ค. ์์ธ์กฐ์ฐจ ์๋ค(๋ณ๋ TOPIS). ๋ฏธ์ปค๋ฒ ์ง์ญ์ ์ค๋ฅ๊ฐ ์๋๋ผ resultCode=00 + ๋น ๊ฒฐ๊ณผ๋ก ์ค๋ฏ๋ก, ๊ทธ๋๋ก ๋๋ฉด "์ฃผ๋ณ์ ์ ๋ฅ์ ์์"๊ณผ ๊ตฌ๋ถ๋์ง ์๋๋ค.
๋์์ฝ๋ ์ ๋ ์๋ฆฌ๊ฐ ์๋๋ค(32010 ์ถ์ฒ โ 32 ๊ฐ์). ์ด ๊ตฌ๋ถ์ด ์์ด์ผ ๋๋ช
์๊ตฐ๊ตฌ๋ฅผ ๊ฐ๋ผ๋ธ๋ค โ ๊ณ ์ฑ๊ตฐ์ ๊ฐ์(๋ฏธ์ปค๋ฒ)ยท๊ฒฝ๋จ(์ปค๋ฒ) ์์ชฝ์ ์์ด ์ง๋ช
๋ง ๋ง์ถ๋ฉด ๊ฐ์ ๊ณ ์ฑ๊ตฐ๊น์ง ์ปค๋ฒ๋ก ์คํํ๋ค. ๊ด์ญ์๋ ๊ตฌ ๋จ์ ์์ด ์ ์ ์ฒด๊ฐ ํ ์ฝ๋(21 ๋ถ์ฐ)์ด๊ณ , ๋ฒ์ค๊ถ์ญ์ด ๋ฌถ์ธ ๊ณณ์ "์์ฃผ์/ํก์ฑ๊ตฐ" ํฉ๋ณธ์ผ๋ก ์จ๋ค.
์ฐ๋ฆฌ 89๊ณณ ์ค ๋ฏธ์ปค๋ฒ 13๊ณณ (89 ร 138 ๋์กฐ):
| ์๋ | ๋ฏธ์ปค๋ฒ ์๊ตฐ๊ตฌ |
|---|---|
| ๊ฐ์ํน๋ณ์์น๋ | ๊ณ ์ฑ๊ตฐ ยท ์ผ์ฒ์ ยท ์๊ตฌ๊ตฐ ยท ์์๊ตฐ ยท ์ ์ ๊ตฐ ยท ํ์ฐฝ๊ตฐ ยท ํ์ฒ๊ตฐ |
| ์ถฉ์ฒญ๋จ๋ | ์์ฐ๊ตฐ |
| ์ ๋ผ๋จ๋ | ๊ฐ์ง๊ตฐ ยท ๋ด์๊ตฐ ยท ๋ณด์ฑ๊ตฐ ยท ์๊ด๊ตฐ ยท ํ์๊ตฐ |
ํํ ์ด ์๋น์ค๊ฐ ๊ฒจ๋ฅํ๋ ๊ฐ์ ์ฐ๊ฐยท์ ๋จ ์ค์ง๋ค. ๊ณต๊ณต๋ฐ์ดํฐ ํด๋ฐฑ ์์ โ ์ ๊ตญ ๋ฒ์ค์ ๋ฅ์ฅ ์์น์ ๋ณด(15067528)๋ "TAGO ์ฐ๊ณ ์ง์์ฒด" ์ค๋
์ท์ด๋ผ ๊ฐ์ ๋ชจ์ง๋จ์ด๋ค. ์์ฉ API(ODsayยท์นด์นด์ค, ์ ๋ฃ)๋ง ๋จ๋๋ค. ์ค์๊ฐ ๋์ฐฉ์ ์ง์์ฒด BIS ๊ตฌ์ถ์ด ์ ์ ๋ผ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๊ฐ.
โ ๋ฉ์ธ ์ ์์ผ๋ฏ๋ก ๊ตฌ๋ถํด์ ๋๋ฌ๋ธ๋ค: BusStopAccess.NotCovered("๋ฐ์ดํฐ ์์") โ NoStopNearby("์ ๋ฅ์ ์์"). ํ๋ณ์ BusAccessService ๊ฐ ๋์๋ชฉ๋ก(24h ์บ์)์ผ๋ก ํ๋ค. ๋ชฉ๋ก์ ๋ชป ์ป์ผ๋ฉด ํ๋ณ ๋ถ๊ฐ๋ผ Unavailable ๋ก ํด๋ฐฑํ๋ค โ ์ปค๋ฒ ์ฌ๋ถ๋ฅผ ๋ชจ๋ฅด๋ ์ฑ "๋ฒ์ค ์์"์ด๋ผ ์๋ดํ๋ฉด ํ๋ฆฐ ๋ง์ด ๋ ์ ์์ด์๋ค.
- ๋ฐ๊ธ: data.go.kr 15125762
ํ๊ตญ์ฒ ๋๊ณต์ฌ_์ด์ฐจ์ดํ์ ๋ณดโ ํ์ฉ์ ์ฒญ - ์ ๊ณต: ์ฌ๊ฐ์ด์ฐจ ์ดํ๊ณํ/์ดํ์ ๋ณด(์ค์๊ฐยท์ง์ฐ). ์ถ๋ฐ์ญ/๋์ฐฉ์ญ/์ดํ์ผ์ ๊ธฐ๋ฐ.
- ํจ์ : ์๊ธยท์๋งคยท์ข์ ๋ฏธ์ ๊ณต(์ดํ ํธ๋ํน์ฉ). ์๊ฐํ๋ 1-4 TAGO ์ด์ฐจ์ ๋ณด๊ฐ ๋ ์ ํฉ.
- OffWay ์ฉ๋: KTX ์ง์ฐ/์ค์ ์ดํ ๋ณด์กฐ (์ ํ).
- ๋ฐ๊ธ: https://openapi.sk.com ํ์๊ฐ์
โ ์ฑ ๋ฑ๋ก โ TMAP ์ํ ๊ตฌ๋
โ
appKey(UUID) ๋ฐ๊ธ - ์ธ์ฆ: ์์ฒญ ํค๋
appKey: <ํค> - Base:
https://apis.openapi.sk.com/tmap/...- ์๋์ฐจ ๊ฒฝ๋ก:
POST /tmap/routes?version=1 - ๊ฒฝ์ ์ง ์ต์ ํ(10๊ณณ):
POST /tmap/routes/routeOptimization10(20/30๊ณณ์ ์๋ํฌ์ธํธ ๋ณ๋)
- ์๋์ฐจ ๊ฒฝ๋ก:
- ํ๋ผ๋ฏธํฐ:
startX/startY,endX/endY(๊ฒฝ๋X/์๋Y,WGS84GEO),searchOption; ์ต์ ํ๋viaPoints[](viaX/viaY/viaTime) - ์๋ต: GeoJSON,
totalTime(์ด)ยทtotalDistance(m)ยทtotalFare - ํ๋(๋ฌด๋ฃ): ๊ฒฝ๋ก 1,000/์ผ, ๊ฒฝ์ ์ง ์ต์ ํ(10๊ณณ) 50/์ผ (์ด๊ณผ ์ ์ ๋ฃ)
โ ๏ธ ํจ์ : ๊ฒฐ๊ณผ ๋ฐ์ดํฐ 24์๊ฐ ์ด์ ์ ์ฅ ๊ธ์ง(์ฝ๊ด) โ ๊ฒฝ๋ก ๊ฒฐ๊ณผ ์๊ตฌ ์บ์ฑ ๋ถ๊ฐ. ์ขํ X=๊ฒฝ๋/Y=์๋ ์์.- OffWay ์ฉ๋: ์๊ฐ์ฉ ๊ธฐ์ค ์ค์๊ฐ ์์์๊ฐ, ๊ด๊ด์ง ๊ฒฝ์ ์ง ์์ ์ต์ ํ(์ผ์ ์๋ ์์ฑ).
| # | ๋ฐ์ดํฐ | ์ถ์ฒ | ํ์ | ๋ฐฉ์ |
|---|---|---|---|---|
| 2-1 | ์ธ๊ตฌ๊ฐ์์ง์ญ 89๊ณณ | ํ์๋ถ ๊ณ ์ (mois.go.kr / nabis.go.kr) | ๊ณ ์๋ฌธ/ํ | ์์ ์๋(๊ฑฐ์ ๋ถ๋ณ, "๊ณ ์ ๊ธฐ์ค์ผ" ๊ธฐ๋ก) |
| 2-2 | ์ํ์ธ๊ตฌ(์ฒด๋ฅ) | ํ์๋ถ data.go.kr 15130539 (ํ์ผ๋ฐ์ดํฐ) | XLSX(๋ถ๊ธฐ) | ๋ถ๊ธฐ๋ง๋ค ๋ค์ด๋ก๋โ์ํฌํธ |
| 2-3 | ๋ก์ปฌ100 | ๋ฌธ์ฒด๋ถ mcst.go.kr / culture.go.kr | PDF/๋ฆฌ์คํธ | ์๋ + ์ขํ๋ ์ง์ค์ฝ๋ฉ ๋ณด๊ฐ |
| 2-4 | ๊ด๊ด๋๋ | tourdure.mcst.go.kr | ์น/๋ฐ๊ฐ๋ฌผ | ์๋ + ์ขํ๋ TourAPI/์ง์ค์ฝ๋ฉ |
| 2-5 | 7๋ ์ฌํ ์ง์ ํํ | ์ ์ฉ API ์์(์ ์์ ๋ช ์) | ์๋ | ์๋ ์ ์ฌ(์ ์ฑ ๋ช ยท๊ธฐ๊ฐยท๋์์งยทํ ์ธ) |
- ์ํ์ธ๊ตฌ ์ฃผ์: ์ ์ฑ ์ "์ํ์ธ๊ตฌ(์ฒด๋ฅ์ธ๊ตฌ)"๋ ํ์๋ถ XLSX๊ฐ ์ ๋ณธ. SGIS๋ ์ผ์์ค ์ธ๊ตฌ๋ผ ๊ฐ๋ ์ด ๋ค๋ฆ. ์์ธ์ ์ํ์ธ๊ตฌ API๋ 2026-06 ํํํ ์ค์ง.
| ๊ธฐ๋ฅ | ํ์ํ ๋ฐ์ดํฐ ์กฐํฉ |
|---|---|
| LNT ๊ฐ์ฉ์๊ฐยท์๋์์น ์ฐํด | ํน์ผ์ ๋ณด |
| ์ธ๊ตฌ๊ฐ์์ง์ญ ์ฌํ์ง ์ถ์ฒ | ์ธ๊ตฌ๊ฐ์์ง์ญ89(seed) + TourAPI + ๊ด๊ด๋น ๋ฐ์ดํฐ(์ง์ค๋ฅ โํ์ฐ์์ ) + ์ํ์ธ๊ตฌ(๊ฐ์ค์น) |
| ์ ์ฑ ํํ ๋งค์นญยท๋ฑ์ง | 7๋ํํ(seed) + ์ธ๊ตฌ๊ฐ์์ง์ญ + ๋ก์ปฌ100/๊ด๊ด๋๋ (seed) |
| ๊ตํตยท๋์ฐฉ์๊ฐ (๋ฐ์ฐจ/ํด๊ทผํ) | TAGO ๋ฒ์ค/์ด์ฐจ + ์ฝ๋ ์ผ + TMAP(์๊ฐ์ฉ) |
| ์ผ์ ์๋ ์์ฑ | TourAPI(์ด์์๊ฐ/ํด๋ฌด) + TMAP(๊ฒฝ์ ์ง ์ต์ ํ) + ์ ์กฐํฉ |
| ์ฐ์ฐจ ์ปจ์คํ | ํน์ผ์ ๋ณด (+ ์ ์ ์ฒด) |
- SRT ๊ณต๊ณตAPI ์์ โ SRT ์๊ฐํ๋ ์ ์ธํ๊ฑฐ๋ ๋ณ๋ ์ฒ๋ฆฌ. KTX๋ TAGO๋ก.
- ์์ธ๋ฒ์ค ๋ฏธ๋๋ ์ง ์กฐํ ๋ถ๊ฐ(๋น์ผ๋ง) โ ๋ฏธ๋ ์ผ์ ์ "์์ ์์์๊ฐ"์ผ๋ก ๊ทผ์ฌ, ์ค์๊ฐ์ ๋น์ผ์.
- TMAP 24h ์ ์ฅ ์ ํ โ ๊ฒฝ๋ก ๊ฒฐ๊ณผ๋ ๋จ๊ธฐ ์บ์(โค24h)๋ง. ์๊ตฌ ์ ์ฅ ๊ธ์ง.
- ๊ฐ๋ฐ๊ณ์ ํ๋(TourAPI/๋น ๋ฐ์ดํฐ 1,000/์ผ, TMAP ์ต์ ํ 50/์ผ) โ ๋๋ ์ฌ์ ์ ์ฌ๋ ๋ฐฐ์นยทํ์ด์งยท์ด์๊ณ์ ์ ํ ๊ณ ๋ ค.
- ์ง์ญ์ฝ๋ ๋ถ์ผ์น(TourAPI sigunguCode โ ๋น ๋ฐ์ดํฐ ์ฝ๋ โ ์ธ๊ตฌ๊ฐ์์ง์ญ ์ง๋ช ) โ ์ง๋ช ๊ธฐ์ค ๋งคํ ํ ์ด๋ธ์ ๋จผ์ ๊ตฌ์ถ(๋ง์คํฐ ๋ฐ์ดํฐ).
- Encoding/Decoding ์๋น์คํค ๋ ๊ฐ ๋ค ๋ณด๊ด.
- data.go.kr ํ์๊ฐ์ (ํด๋ํฐ ๋ณธ์ธ์ธ์ฆ)
- ํ์ฉ์ ์ฒญ: ํน์ผ์ ๋ณด(15012690) ยท ๊ตญ๋ฌธ๊ด๊ด์ ๋ณด(15101578) ยท ๊ด๊ด๋น ๋ฐ์ดํฐ(15101972) ยท TAGO ๋ฒ์ค๋์ฐฉ(15098530)ยท๊ณ ์(15098522)ยท์์ธ(15098541)ยท์ด์ฐจ(15098552) ยท ์ฝ๋ ์ผ(15125762) ยท ์ํ์ธ๊ตฌ ํ์ผ(15130539)
- ๋ฐ๊ธ๋ serviceKey(Encoding+Decoding) ํ๋ณด
- openapi.sk.com ํ์๊ฐ์ โ ์ฑ ๋ฑ๋ก โ TMAP appKey ๋ฐ๊ธ
- (์ ํ) SGIS ๊ฐ๋ฐ์ง์์ผํฐ key/secret
- ์ ์ ๋ฐ์ดํฐ ๋ค์ด๋ก๋: ์ธ๊ตฌ๊ฐ์์ง์ญ 89๊ณณ ยท ์ํ์ธ๊ตฌ XLSX ยท ๋ก์ปฌ100 ๋ฆฌ์คํธ ยท ๊ด๊ด๋๋ ๋ชฉ๋ก
- 7๋ ํํ ์ ๋ณด ์๋ ์ ๋ฆฌ(์ ์ฑ ๋ช ยท์ด์๊ธฐ๊ฐยท๋์์งยทํ ์ธ์จ)
2026-07-21 ์กฐ์ฌ. TourAPI๋ง์ผ๋ก ๋ณผ๊ฑฐ๋ฆฌ๊ฐ ๋ถ์กฑํ ์๋์(์์ 10๊ฐ๊ธ) ๋ณด๊ฐ์ฉ ์ถ๊ฐ ์์ค. ์๋๋ ํ๋ณด์ด๋ฉฐ ์์ง ํด๋ผ์ด์ธํธ ๋ฏธ๊ตฌํ. ์ด๋ฏธ ์ฐ๋ฆฌ๊ฐ ์ฐ๋ ์์ค(ํน์ผ์ ๋ณดยทTourAPIยท๊ด๊ด๋น ๋ฐ์ดํฐยทTAGOยท์ฝ๋ ์ผยทTMAP)๋ ๊ทธ๋๋ก ์ ์งํ๋ค. ๊ด๋ จ ์ด์ #44.
- ์ธ์ฆ: ์์ (API keyยท๋ก๊ทธ์ธยทํ๋ก์ ๋ถํ์). GET ยท XML ์๋ต ยท
User-Agentํค๋ ํ์ ยท timeout ~20s - ๋ชฉ๋ก:
https://www.khs.go.kr/cha/SearchKindOpenapiList.do- params:
ccbaMnm1(์ ์ฐ๋ช ๊ฒ์์ด) ยทccbaCtcd(์๋์ฝ๋ 2์๋ฆฌ) ยทpageUnit(1~100) ยทpageIndexยทccbaCncl=N(์ง์ ํด์ ์ ์ธ) - item ํ๋:
ccbaMnm1(๋ช ) ยทccbaMnm2(ํ์) ยทccbaCtcdNm(์๋๋ช ) ยทccbaAdmin(๊ด๋ฆฌ๊ธฐ๊ด) ยทlatitudeยทlongitudeยทccbaKdcd(์ข ๋ชฉ์ฝ๋) ยทccbaAsno(๊ด๋ฆฌ๋ฒํธ) ยทccbaCtcd(์๋์ฝ๋)
- params:
- ์์ธ:
https://www.khs.go.kr/cha/SearchKindOpenapiDt.doโ paramsccbaKdcd+ccbaAsno+ccbaCtcdโ ์ค๋ช (content)ยท์ฃผ์ยท์ขํยท์ด๋ฏธ์ง - ํ์ฌ:
https://www.khs.go.kr/cha/openapi/selectEventListOpenapi.doโ params ์ฐ๋(YYYY)ยท์(1~12) โ ํ์ฌ๋ช ยท๊ธฐ๊ฐยท์ง์ญยท๋ณธ๋ฌธ(subContent)ยท๋งํฌ(subPath) - โญ ์ขํ ์ ๊ณต โ ์ง๋ช
ยท์ขํ๋ก ์ฐ๋ฆฌ region/POI์ ๋งคํ. TourAPI
contentTypeId=14(๋ฌธํ์์ค) ๊ณ์ด ๋ณผ๊ฑฐ๋ฆฌ ๋ณด๊ฐ. - ํจ์ : ๊ณต์ ํ์ด์ง ๋ช ์ ํ๋ ํ์ธ ํ์. ์ง๋ช โ์๋์ฝ๋ ๋งคํ ํ ์ด๋ธ ์ ๊ตฌ์ถ(์ฐ๋ฆฌ 89 ์ง๋ช ๊ธฐ์ค).
- OffWay ์ฉ๋: ์ฝํ ์ธ ์ถฉ๋ถ์ฑ(#21)์์ ์ธ์ 50km ํ์ฅ ์ ์์ฒด ๋ณผ๊ฑฐ๋ฆฌ ํ๋ ยท ์ง์ญ ์์ธ์ ๋ฌธํ์ฌยท์ด๋ฌ์ ํ์ฌ.
์ฌํ๊น์ง ๋จ์ ์ผ์์ ๋ฐ๋ผ ๋ด๋น์ด ๊ฐ๋ฆฐ๋ค. ์คํธ์ถ ํ์ธ(2026-08-03), ์ ๋ถ ๊ธฐ์กด DATA_GO_KR ํค๋ก ๋์.
| ๋จ์ ์ผ์ | API | base | ์ฃผ๋ ๊ฒ |
|---|---|---|---|
| 0~3์ผ | ๋จ๊ธฐ์๋ณด | VilageFcstInfoService_2.0 |
๊ธฐ์จยทํ๋์ํยท๊ฐ์ํ๋ฅ |
| 4~10์ผ | ์ค๊ธฐ ์ก์์๋ณด | MidFcstInfoService |
ํ๋์ํยท๊ฐ์ํ๋ฅ (๊ธฐ์จ ์์) |
| 1~9์ผ | ๊ด๊ด๊ธฐํ์ง์ | TourStnInfoService1 |
๊ด๊ด ์ ํฉ๋ ์ง์ยท๋ฑ๊ธ |
| 11์ผ ์ด์ | ์์ | โ | ์๋ณด๊ฐ ์กด์ฌํ์ง ์๋ ๊ตฌ๊ฐ(#133 ํ๋ ๊ฐ์ผ๋ก) |
โ ๏ธ VilageFcstInfoService(๊ตฌ๋ฒ์ )๋ ํ๊ธฐ๋๋ค.NO_OPENAPI_SERVICE_ERROR(ํด๋น ์คํAPI ์๋น์ค๊ฐ ์๊ฑฐ๋ ํ๊ธฐ๋จ)๊ฐ ์จ๋ค._2.0์ ์จ์ผ ํ๋ค. ์คํค๋งยทํ๋ผ๋ฏธํฐ๋ ๊ฐ์ base ๋ง ๋ค๋ฅด๋ค. ๋ ์จ๋ ๋ถ๊ฐ ์ ๋ณด๋ผ ์คํจํด๋ ์ฝ์ค๊ฐ 200 ์ผ๋ก ๋๊ฐ๋ ํ์ ๊ฒฝ๋ก๊ฐ ์ฃฝ์ ์ค ๋ชจ๋ฅด๊ณ ์ง๋๋ค(#128) โ E2E ๋ก ์ ์ ์ ๊ณ ์ ํ๋ค.
๋จ๊ธฐ์๋ณด VilageFcstInfoService_2.0/getVilageFcst
- ์
๋ ฅ: ๊ฒฉ์
nx/ny(์๊ฒฝ๋ ๋ณํ ํ์) ยทbase_date/base_time(๋ฐํ 02ยท05ยท08ยท11ยท14ยท17ยท20ยท23์) - ์ค์ธก: 907๊ฑด ยท 121KB ยท 1.15์ด. ์๋ณด๋ ์ค๋
D+4 ๊ฐ ์ค๋ **์ต์ ๊ธฐ์จ(TMN)๊น์ง ์์ ํ ๋ ์ D+1D+3**
์ค๊ธฐ ์ก์์๋ณด MidFcstInfoService/getMidLandFcst
- ์
๋ ฅ:
regId(๊ด์ญ 10๊ฐ ๊ตฌ์ญ) ยทtmFc(๋ฐํ 06ยท18์,yyyyMMddHHmm) - ์๋ต์ด ํ ํ์ D+4~D+10 ์ด ์ปฌ๋ผ์ผ๋ก ๋ค์ด์จ๋ค(
wf4Amยทยทยทwf10). D+7 ๊น์ง๋ง ์ค์ /์คํ๊ฐ ๋๋๊ณ D+8 ๋ถํฐ๋ ํ๋ฃจ ํ๋ - ๊ตฌ์ญ ์ฝ๋ 10์ข
์ ๋ถ ์๋ต ํ์ธ:
11B00000(์์ธยท์ธ์ฒยท๊ฒฝ๊ธฐ)11D10000(๊ฐ์์์)11D20000(๊ฐ์์๋)11C10000(์ถฉ๋ถ)11C20000(๋์ ยท์ธ์ข ยท์ถฉ๋จ)11F10000(์ ๋ถ)11F20000(๊ด์ฃผยท์ ๋จ)11H10000(๋๊ตฌยท๊ฒฝ๋ถ)11H20000(๋ถ์ฐยท์ธ์ฐยท๊ฒฝ๋จ)11G00000(์ ์ฃผ) โ ๏ธ ๊ธฐ์จ(getMidTa)์ ๋ค๋ฅธ ์ฝ๋ ์ฒด๊ณ๋ค. ์๊ตฐ ๋จ์ ์ง์ ์ฝ๋๋ฅผ ์ฐ๋๋ฐ, ๊ด์ญ ๊ตฌ์ญ ์ฝ๋๋ฅผ ๋ฃ์ผ๋ฉด ์ค๋ฅ๊ฐ ์๋๋ผresultCode 00์taMin4=0์ด ์จ๋ค. ์๋ต์ ์ง์ ๋ช ์ด ์์ด ์ฝ๋๋ฅผ ์ด๊ฑฐํด ์ฐพ์ ์๋ ์๋ค(์ฐพ์๋ ์ด๋ ์๊ตฐ์ธ์ง ๋ชจ๋ฅธ๋ค). ์ง์ ์ฝ๋ ํ๋ณด ์ ๊น์ง ์ค๊ธฐ ๊ธฐ์จ์ ๋น์ ๋๋ค
๊ด๊ด๊ธฐํ์ง์ TourStnInfoService1/getCityTourClmIdx1
- ์
๋ ฅ:
CURRENT_DATE(yyyyMMddHH) ยทHOUR(์ฐ์ถ ๋ฒ์, 24) ยทDAY โ ๏ธ ํฌํธ์ด base ๋ฅผTourStnInfoService11๋ก ํ๊ธฐํ๋ ์ค์ ๋ก๋TourStnInfoService1(1์ด ํ๋).11์ 404โ ๏ธ DAY๋ ๋ฉฐ์น ๋ค๊ฐ ์๋๋ผ ๋ฉฐ์น ์น๋ค.DAY=9๋ฉด D+9 ํ๋ฃจ๊ฐ ์๋๋ผ D+1~D+9 ์ํ ๋ ์ด ํ๊บผ๋ฒ์ ์จ๋ค(totalCount๊ฐ 236 ร DAY ๋ก ์ฆ๊ฐ). ์คํ์ ์ผ๋ก ์ฐฉ๊ฐํด ๋ ์ง๋ง๋ค ๋ถ๋ฅด๋ฉด ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ํ ๋ฒ ๋ฐ๋๋คโ ๏ธ ์ํ์ ๋๊ฒจ๋ ์ค๋ฅ๊ฐ ์๋ค.DAY=10ยทDAY=12๋ชจ๋ D+9 ๊ฐ์ ๊ทธ๋๋ก ์ค๋ค. ์์ฒญ ๋ ์ง๋ก ๋ผ๋ฒจ์ ๋ถ์ด๋ฉด ์กฐ์ฉํ ํ๋ฆฌ๋ฏ๋ก ์๋ตtm์ผ๋ก ๊ฒ์ฆํ๋คDAY=0(์ค๋)์NO_DATAโ ์กฐํ ๊ฐ๋ฅ ๋ฒ์๋ D+1~D+9- ์ค์ธก:
DAY=9๊ธฐ์ค 2,124๊ฑด(9์ผ ร 236 ์๊ตฐ๊ตฌ) ยท 347KB ยท 2.5์ด.WebClientmaxInMemorySize(2MB) ์์ ๋ค์ด์จ๋ค โ ๏ธ cityAreaId๋ ๋ฒ์ ๋์ฝ๋๊ฐ ์๋๋ค. ์ฐ๋ฆฌregion.legal_code๋ก ์กฐ์ธํ๋ฉด 89๊ณณ ์ค 51๊ณณ๋ง ๋ง๋๋ค โ ๊ฐ์์42xxx(ํน๋ณ์์น๋ ์ ํ ์ ), ์ ๋ถ์45xxx, ๊ด์ฃผ+์ ๋จ์ ๋นํ์ค12xxx๋ก ๋ฌถ์ฌ ์๋ค. ์๊ตฐ๊ตฌ๋ช (์๋+์๊ตฐ๊ตฌ)์ผ๋ก ๋ง์ถ๋ฉด 89/89- ์๋ต ํ๋:
tmยทtotalCityNameยทdoName(์ถ์ฝ ์๋๋ช 17์ข ) ยทcityNameยทcityAreaIdยทkmaTciยทTCI_GRADE
- upstream: ์์ด์ฝ๋ฆฌ์(ํ๊ตญํ๊ฒฝ๊ณต๋จ) ๋๊ธฐ์ค์ผ์ ๋ณด. ์ธก์ ์๋ช (ํ์ ๊ตฌ์ญ) ๊ธฐ๋ฐ ์กฐํ.
- ์ฉ๋: ์ง์ญ ์นด๋์ ๋๊ธฐ์ง ๋ฑ์ง. Nice-to-have.
- KOPIS ๊ณต์ฐ์์ ํตํฉ์ ์ฐ๋ง: ๊ณต์ฐยท์ ์(์ฒดํ๊ฑฐ๋ฆฌ). ๋ณ๋ KOPIS ํค ๋ฐ๊ธ ํ์ โ ์ฐ์ ์์ ๋ฎ์.
- ์ฒ๋๋คe(์์ฐํด์๋ฆผ, foresttrip.go.kr): 7๋ ํํ ๋์ด์ฒดํ/์น์ ๊ด๊ด๊ณผ ๋งคํ๋๋ ๊ณต์ API ์์ด ์คํฌ๋ํ โ ๋ฐฑ์๋ ์์ ์ฑ ๋ฎ์ ๋ณด๋ฅ.
- ์์ค์ ๋๋ ktx/srt ์ฐ๋์ ๋น๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(
korail2-ncard/SRTrain) + ๊ฐ์ธ ๋ก๊ทธ์ธ ๊ณ์ + anti-bot ํ ํฐ ๊ธฐ๋ฐ์ด๋ผ ๊ณต๊ฐ ์๋น์ค ๋ฐฑ์๋์ ๋ถ์ ํฉ. ์ด์ฐจ๋ ยง1-4 TAGO(KTX ํฌํจ)ยทยง1-5 ์ฝ๋ ์ผ ๊ณต์ API๋ฅผ ์ ์งํ๋ค. (ยง4์ "SRT ๊ณต๊ณตAPI ์์" ์ฌํ์ธ.)