[250920] TIL

Today I Learned (2025-09-20)

  • HTTP μš”μ²­ λ³΄λ‚΄λŠ” 도ꡬ (Axios, Fetch, Ky)
  • Fetch 기반 κ²½λŸ‰ HTTP ν΄λΌμ΄μ–ΈνŠΈ, λ‚΄λΆ€μ μœΌλ‘œ Fetch μ‚¬μš©ν•¨ + 체이닝 API

  • λ„€νŠΈμ›Œν¬ 였λ₯˜ λ°œμƒ μ‹œ μžλ™μœΌλ‘œ μž¬μš”μ²­μ„ μ‹œλ„ν•˜μ—¬ μ•ˆμ •μ„±μ„ 높인닀.
  • νƒ€μž„μ•„μ›ƒ κΈ°λŠ₯ λ‚΄μž₯λ˜μ–΄ μžˆμ–΄,응닡이 지연될 경우 일정 μ‹œκ°„ ν›„ μš”μ²­μ„ 쀑단할 수 μžˆλ‹€.
  • λ²ˆλ“€ 크기가 μž‘κΈ° λ•Œλ¬Έμ— 초기 λ‘œλ”© 속도λ₯Ό ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.

단점

  • HTTP 였λ₯˜ μƒνƒœμ½”λ“œλ₯Ό μžλ™μœΌλ‘œ reject ν•˜μ§€ μ•ŠλŠ”λ‹€. λ”°λΌμ„œ Fetch API 기반인 ky도 HTTP Error 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ μ—λŸ¬ 처리λ₯Ό ν•΄μ•Όν•œλ‹€.
    • λ„€νŠΈμ›Œν¬ λ‹¨μ—μ„œ μ‹€νŒ¨λ§Œ rejectν•˜κ³  404, 500 같은 μƒνƒœμ½”λ“œλŠ” μ„±κ³΅μœΌλ‘œ μ²˜λ¦¬ν•¨
async function fetchUser() {
  try {
    const response = await fetch(
      "https://jsonplaceholder.typicode.com/invalid-url"
    );

    // λ„€νŠΈμ›Œν¬λŠ” μ„±κ³΅ν–ˆμ§€λ§Œ, μƒνƒœ μ½”λ“œ 확인 ν•„μš”
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }

    const data = await response.json();
    console.log("μœ μ € 정보:", data);
  } catch (error) {
    console.error("μ—λŸ¬ λ°œμƒ:", error.message);
  }
}

fetchUser();
import ky from "ky";

async function fetchUser() {
  try {
    // μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μ—”λ“œν¬μΈνŠΈ 호좜
    const data = await ky
      .get("https://jsonplaceholder.typicode.com/invalid-url")
      .json();
    console.log("μœ μ € 정보:", data);
  } catch (error) {
    if (error.name === "HTTPError") {
      // KyλŠ” HTTPError 클래슀둜 μ—λŸ¬ 던짐
      console.error("HTTP μ—λŸ¬ λ°œμƒ:", error.response.status);
    } else {
      console.error("기타 λ„€νŠΈμ›Œν¬ μ—λŸ¬:", error.message);
    }
  }
}

fetchUser();

Categories:

Updated:

Leave a comment