ํ ์ฌ๋์ ์ ์ฅ ๋ชฉ๋ก์ ํ ๋ฒ์ ๋ฃ์ต๋๋ค. ์ขํ๊ฐ ์์ผ๋ฉด ์ฃผ์๋ฅผ ๋ณด๊ณ ์๋์ผ๋ก ์ฑ์๋๋ค.
Network ํญ์์ ๋ณต์ฌํ JSON์ ๊ทธ๋๋ก ๋ถ์ฌ๋ฃ์ผ์ธ์. ์๋ต์ด ์ฌ๋ฌ ๊ฐ๋ฉด ์ด์ด์ ๋ถ์ฌ๋ ๋ฉ๋๋ค. ๋๋ ์ด๋ฆ, ์ฃผ์ ํ์์ผ๋ก ํ ์ค์ฉ ์ ์ด๋ ๋ฉ๋๋ค.
๊ฐ์ ์ฅ์๋ฅผ ์ฌ๋ฌ ๋ช ์ด ์ ์ฅํ์ผ๋ฉด ์๋์ผ๋ก ํฉ์ณ์ง๊ณ , ๋ง์ปค์ ๋ช ๋ช ์ด ์ ์ฅํ๋์ง ํ์๋ฉ๋๋ค.
์์ฒญ ์ฐพ๊ธฐ๊ฐ ๋ฒ๊ฑฐ๋ก์ฐ๋ฉด, ํ์ด์ง๋ฅผ ์ฐ ์ํ์์ ์ฝ์์ ์๋๋ฅผ ๋ถ์ฌ๋ฃ๊ณ ๊ทธ ๋ค์์ ๋ชฉ๋ก์ ๋๊น์ง ์คํฌ๋กคํ์ธ์.
(()=>{const f=window.fetch,X=XMLHttpRequest.prototype.open;window.__CAP=[];
const ok=s=>/"(name|placeName|title)"/.test(s)&&/"(x|px|mapx|longitude|lng)"/.test(s);
window.fetch=async(...a)=>{const r=await f(...a);r.clone().text().then(t=>{if(ok(t))try{window.__CAP.push(JSON.parse(t))}catch(e){}}).catch(()=>{});return r;};
XMLHttpRequest.prototype.open=function(){this.addEventListener('load',()=>{try{if(ok(this.responseText))window.__CAP.push(JSON.parse(this.responseText))}catch(e){}});return X.apply(this,arguments)};
console.log('์ค๋น ์๋ฃ. ๋ชฉ๋ก์ ๋๊น์ง ์คํฌ๋กคํ ๋ค copy(JSON.stringify(window.__CAP)) ๋ฅผ ์คํํ์ธ์.')})()
๋ค์ด๋ฒ๋ ์ ์ฅ ๋ฆฌ์คํธ์ฉ ๊ณต๊ฐ API๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ ๋ฐฉ๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฏธ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๊ฒ์ด๋ผ ๊ฐ์ธ์ ์ผ๋ก ๋ชจ์ผ๋ ์ฉ๋๋ก๋ ๋ฌด๋ฆฌ๊ฐ ์์ง๋ง, ์๋น์ค๊ฐ ๋ฐ๋๋ฉด ํ์๋ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ ์ ๋๋ฉด ์ด๋ฆ๊ณผ ์ฃผ์๋ง ๋ถ์ฌ๋ฃ์ด๋ ์ขํ๋ ์๋์ผ๋ก ์ฑ์์ง๋๋ค.
์๋ ์ฝ๋๋ฅผ ํ์ผ ์๋จ SEED_DATA์ ๋ฎ์ด์ฐ๋ฉด, ๋ฐฐํฌํ์ ๋ ๋ชจ๋๊ฐ ๊ฐ์ ๋ชฉ๋ก์ ๋ฐ๋ก ๋ณด๊ฒ ๋ฉ๋๋ค.
์๋ ๋ด์ฉ์ ๋ณต์ฌํด์ ๋ณด๋ด์ฃผ์๋ฉด ์์ธ์ ๋ฐ๋ก ์ง์ ์ ์์ต๋๋ค.