πŸžν”„λ‘œκ·Έλž˜λ°

[정보] JavaScriptμ—μ„œ HTTP μš”μ²­μ„ λ§Œλ“œλŠ” 방법

TwoIceFish 2023. 2. 15. 12:03

JavaScriptμ—μ„œ HTTP μš”청을 λ§Œλ“œλŠ” λ°©λ²•μœΌλ‘œλŠ” λ‚΄μž₯된 fetch() ν•¨μˆ˜λ‚˜ XMLHttpRequest (XHR) κ°μ²΄λ₯Ό μ‚¬μš©ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ fetch()을 μ‚¬μš©ν•˜λŠ” μ˜ˆμ‹œμž…λ‹ˆλ‹€:

 

 

fetch('https://example.com/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

이 μ˜ˆμ‹œμ—μ„œλŠ” https://example.com/data둜 GET μš”μ²­μ„ 보내고 μžˆμŠ΅λ‹ˆλ‹€. fetch() ν•¨μˆ˜λŠ” μš”μ²­μ— λŒ€ν•œ μ„œλ²„μ˜ 응닡을 λ‚˜νƒ€λ‚΄λŠ” Response 객체λ₯Ό λ°˜ν™˜ν•˜λŠ” Promiseλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

그런 λ‹€μŒ, Response κ°μ²΄μ—μ„œ json() λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‘λ‹΅μ—μ„œ JSON 데이터λ₯Ό μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ©”μ†Œλ“œλŠ” Promiseλ₯Ό λ°˜ν™˜ν•˜μ—¬ νŒŒμ‹±λœ JSON 데이터λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

두 번째 then() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 이전 Promiseμ—μ„œ λ°˜ν™˜λœ JSON 데이터λ₯Ό μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ˜ˆμ œμ—μ„œλŠ” 데이터λ₯Ό μ½˜μ†”μ— 둜그둜 좜λ ₯ν•˜μ§€λ§Œ, μ—¬κΈ°μ—μ„œ ν•„μš”ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, catch() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μš”μ²­ λ˜λŠ” 응닡 쀑에 λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€.

λ‹€μŒμ€ XMLHttpRequest (XHR) 객체λ₯Ό μ‚¬μš©ν•˜λŠ” μ˜ˆμ‹œμž…λ‹ˆλ‹€:

 

const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/data');
xhr.responseType = 'json';
xhr.onload = function() {
  console.log(xhr.response);
};
xhr.send();

이 μ˜ˆμ‹œμ—μ„œλŠ” μƒˆλ‘œμš΄ XHR 객체λ₯Ό λ§Œλ“€κ³  https://example.com/data둜 GET μš”μ²­μ„ μ—½λ‹ˆλ‹€. responseType 속성을 json으둜 μ„€μ •ν•˜μ—¬ XHR 객체가 응닡을 μžλ™μœΌλ‘œ JSON으둜 νŒŒμ‹±ν•˜λ„λ‘ν•©λ‹ˆλ‹€.

onload 이벀트 ν•Έλ“€λŸ¬λ₯Ό μ„€μ •ν•˜μ—¬ 성곡적인 응닡을 μ²˜λ¦¬ν•©λ‹ˆλ‹€. 이 μ˜ˆμ‹œμ—μ„œλŠ” 응닡을 μ½˜μ†”μ— 둜그둜 좜λ ₯ν•©λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, send() λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μš”μ²­μ„ λ³΄λƒ…λ‹ˆλ‹€.