۱۲

مقدمه‌ای بر API و Fetch 📡

یاد می‌گیریم چطوری از سرورهای دیگه اطلاعات بگیریم و اپ‌های پویا بسازیم.

API دیگه چه صیغه‌ایه؟

API مخفف Application Programming Interface هست. فکر کن رفتی رستوران و می‌خوای غذا سفارش بدی. تو که خودت بلند نمی‌شی بری تو آشپزخونه! از طریق گارسون (API) سفارشت رو به آشپزخونه (سرور) می‌دی و گارسون هم غذات (اطلاعات) رو برات میاره. API یه رابط بین برنامه ما و یه سرور دیگه‌ست که بهمون اجازه می‌ده از اطلاعات و خدمات اون سرور استفاده کنیم.

`fetch()`: گارسون مخصوص جاوااسکریپت!

`fetch` یه ابزار مدرن تو جاوااسکریپته که کارش دقیقاً مثل همون گارسونه. باهاش می‌تونیم به یه آدرس (URL) درخواست بفرستیم و اطلاعات رو بگیریم. `fetch` یه Promise برمی‌گردونه، پس باید با `then` یا `async/await` باهاش کار کنیم.

// آدرس یه API رایگان برای گرفتن اطلاعات کاربران
const apiUrl = 'https://jsonplaceholder.typicode.com/users/1';

async function getUser() {
  try {
    const response = await fetch(apiUrl); // ارسال درخواست
    const userData = await response.json(); // تبدیل جواب به فرمت JSON
    
    console.log('اطلاعات کاربر:', userData.name);
    console.log('ایمیل:', userData.email);
  } catch (error) {
    console.error('خطا!', error);
  }
}

getUser();

تمرین! 🧠

یه دکمه تو HTML بساز. کاری کن که با هر بار کلیک روی دکمه، یه جوک رندوم از API رایگان `https://api.chucknorris.io/jokes/random` گرفته بشه و متنش داخل یه تگ `p` نمایش داده بشه.

جواب تمرین

<!-- HTML -->
<button id="joke-btn">یه جوک بگو!</button>
<p id="joke-text"></p>

<!-- JavaScript -->
<script>
  const jokeBtn = document.getElementById('joke-btn');
  const jokeText = document.getElementById('joke-text');
  const jokeApiUrl = 'https://api.chucknorris.io/jokes/random';

  async function getJoke() {
    jokeText.innerText = 'صبر کن ببینم...';
    try {
      const response = await fetch(jokeApiUrl);
      const data = await response.json();
      jokeText.innerText = data.value;
    } catch (error) {
      jokeText.innerText = 'ای بابا، اینترنت قطع شد انگار!';
    }
  }

  jokeBtn.addEventListener('click', getJoke);
</script>