برنامه نویسی و طراحی سایت

Api در جاوا اسکریپت – از صفر تا صد + مثال و کد

Api در جاوا اسکریپت – از صفر تا صد + مثال و کد

زبان برنامه نویسی جاوا اسکریپت به یکی از اجزای ضروری توسعه وب مدرن تبدیل شده است. این زبان در اوایل تولد خود زبانی ساده بود و رفته‌رفته به زبانی همه‌کاره و قدرتمند تبدیل شد. جاوا اسکریپت به توسعه‌دهندگان این امکان را می‌دهد تا به راحتی به وظایف «فرانت‌اند» (Frontend) و «بک‌اند» (Backend) بپردازند. یکی از نیازهای رایج در توسعه برنامه شامل تعامل با API-های مختلف است که در این زمینه جاوا اسکریپت بسیار خوب عمل می‌کند. در این مطلب از «مجله تم آف» قصد داریم بحث API در جاوا اسکریپت را به زبانی ساده و به همراه مثالی عملی تشریح کنیم. قبل از پرداختن به بحث API در جاوا اسکریپت لازم است که کاربران با برخی از پیش‌نیازها و اصلاحات این مبحث آشنا شوند که در ادامه به آن پرداخته خواهد شد.

فهرست مطالب این نوشته
REST API در جاوا اسکریپت چیست؟

منظور از API در جاوا اسکریپت چیست؟

پیش‌ نیازهای یادگیری API در جاوا اسکریپت چیست؟

CRUD و انواع درخواست‌ ها

درک نقاط پایانی و عملیات CRUD در API های REST

نقاط پایانی و CRUD

اتصال به API در جاوا اسکریپت

مرحله ١. دریافت کلید API

مرحله ۲. آزمایش نقاط پایانی API در جاوا اسکریپت

مرحله ۳. ساخت اولین برنامه جاوا اسکریپت با API

ساخت برنامه جاوا اسکریپت با API

مرحله ۱. دریافت کلید API برای ساخت برنامه

مرحله ۲. آزمایش نقاط پایانی API

مرحله ۳. ساخت اولین برنامه با API در جاوا اسکریپت

سخن پایانی

faradars mobile

REST API در جاوا اسکریپت چیست؟

برای درک مفهوم «REST API» از منظر جاوا اسکریپت، مهم است که ابتدا مفهوم «رابط برنامه‌نویسی اپلیکیشن» (Application Programming Interface) به خوبی درک شود. در اصل API شامل مجموعه‌ای از قوانین است که نحوه دسترسی به سرویس خاصی را مشخص می‌کند. این قوانین فرمت و مجموعه دستوراتی را تعیین می‌کنند که برنامه کاربر می‌تواند از آن برای تعامل با سرویس استفاده کند و همچنین داده‌هایی را که سرویس می‌تواند در پاسخ بازگرداند، تعیین می‌کند. APIها به عنوان پلی بین برنامه کاربر و سرویس‌های خارجی عمل می‌کنند.

آموزش JavaScript ES6 جاوا اسکریپت
فیلم آموزش JavaScript ES6 جاوا اسکریپت در تم آف

کلیک کنید

وقتی صحبت از جاوا اسکریپت می‌شود، REST API در واقع نوعی API محسوب می‌گردد که از درخواست‌های «HTTP» برای برقراری ارتباط با سرویس‌های وب و رعایت محدودیت‌های خاص استفاده می‌کند.

مهم‌ترین این محدودیت‌ها به صورت موارد زیر هستند:

  • «معماری کلاینت – سرور»: در این معماری، کلاینت مسئولیت رابط کاربری را بر عهده دارد، در حالی که سرور، عملیات بک‌اند و ذخیره‌سازی داده‌ها را مدیریت می‌کند. کلاینت و سرور هر دو موجودیت‌های مستقلی هستند که می‌توانند به صورت جداگانه جایگزین شوند.
  • «Stateless»: یک REST API بدون حالت است، به این معنی که هیچ داده مشتری در سمت سرور ذخیره نخواهد شد و وضعیت جلسه در سمت مشتری حفظ می‌شود.
  • «Cacheable»: کلاینت‌ها توانایی ذخیره پاسخ‌های سرور را دارند که به بهبود عملکرد کمک می‌کند.
api در جاوا اسکریپت

از دیدگاه جاوا اسکریپت، ادغام با REST API را می‌توان به عنوان برقراری ارتباط با منبع داده واقع در آدرسی خاص در اینترنت درک کرد. با استفاده از کتابخانه‌های خاص می‌توان به این اتصال به روشی تعریف شده دسترسی داشت.

منظور از API در جاوا اسکریپت چیست؟

API مخفف «Application Programming Interface» است. از منظر جاوا اسکریپت API را می‌توان از ٢ جنبه بررسی کرد، «Web API» و «Server API». در واقع Web API نوعی رابط برنامه نویسی کاربردی برای وب است. API مرورگر می‌تواند عملکرد مرورگر وب را گسترش داده و از طرفی دیگر Server API می‌تواند عملکرد وب سرور را گسترش دهد.

پیش‌ نیازهای یادگیری API در جاوا اسکریپت چیست؟

برای اطمینان از یادگیری آسان رویکرد API در جاوا اسکریپت، از کتابخانه «Axios» برای رسیدگی به پرس‌وجوها استفاده خواهد شد. این کتابخانه به دلیل سادگی و تطبیق‌پذیری آن انتخاب شده است. علاوه بر این، درک اولیه «HTML» ،«CSS»، جاوا اسکریپت و انواع داده برای درک محتوای این مطلب ضروری است.

آموزش پروژه محور اچ تی ام ال و سی اس اس HTML و CSS
فیلم آموزش پروژه محور اچ تی ام ال و سی اس اس HTML و CSS در تم آف

کلیک کنید

CRUD و انواع درخواست‌ ها

«CRUD» نوعی مفهوم اساسی برنامه نویسی را نشان می‌دهد که شامل چهار عمل اساسی «ایجاد» (Create)، «خواندن» (Read)، «به‌روزرسانی» (Update) و «حذف» (Delete) است. در زمینه REST API شرح این اقدامات به صورت موارد زیر هستند:

  • «POST»: این متد درخواست برای عمل ایجاد استفاده می‌شود و داده‌های جدیدی را به سرور اضافه می‌کند. به عنوان مثال، می‌توان از درخواست POST برای اضافه کردن نوعی اقلام جدید به موجودی خود استفاده کرد.
  • «GET»: عمل خواندن با متد درخواست GET مرتبط است. این متد اطلاعاتی مانند فهرستی از موارد را بازیابی می‌کند. درخواست‌های GET رایج‌ترین نوع درخواست هستند. آن‌ها به کاربر اجازه می‌دهند تا داده‌هایی را از API که آماده اشتراک‌گذاری است واکشی کند.
  • «PUT»: عمل به‌روزرسانی با استفاده از متد درخواست PUT انجام می‌شود. این متد تغییرات در اطلاعات موجود را امکان‌پذیر می‌کند. به عنوان مثال، می‌توان از درخواست PUT برای تغییر رنگ یا مقدار محصول موجود استفاده کرد.
  • « DELETE»: عمل حذف از طریق متد درخواست DELETE اجرا می‌شود. این متد در اصل برای حذف اطلاعات موجود از منبع داده استفاده خواهد شد.
CRUD چیست

درک عملیات CRUD و متدهای درخواست متناظر آن‌ها برای کار مؤثر با API های REST بسیار مهم است.

درک نقاط پایانی و عملیات CRUD در API های REST

کار با API های REST و API در جاوا اسکریپت مستلزم درک مهمی از «نقاط پایانی» (Endpoint) و عملیات CRUD است. نقاط پایانی به عنوان آدرس‌های خاصی عمل می‌کنند که می‌توان برای دسترسی به ویژگی‌ها یا داده‌های خاص از طریق متدهای درخواستی خاص به آن‌ها مراجعه کرد. در ادامه این مطلب از مجله تم آف نقاط پایانی به همراه مثال‌های عملی را با استفاده از «JAAS API» ارائه خواهد شد که تولید و اصلاح شی «JSON» را تسهیل می‌کند. برای این هدف از سرویس «[+] RapidAPI» استفاده می‌کنیم. این پلتفرم نوعی «API Hub» دارد که به API های متعددی دسترسی می‌دهد و امکان آزمایش مستقیم را در پلتفرم‌های کاربر فراهم می‌کند.

آموزش جاوا اسکریپت JavaScript
فیلم آموزش جاوا اسکریپت JavaScript در تم آف

کلیک کنید

نقاط پایانی و CRUD

نقاط پایانی در ارتباطات REST API نقش حیاتی دارند. آن‌ها نشان‌دهنده آدرس‌های خاصی هستند، مانند « https://hotels-to-stay.com/best-hotels-paris

»، که وقتی با متد درخواست مناسب به آن دسترسی ایجاد شود، دسترسی به ویژگی‌ها یا داده‌های خاصی را فراهم می‌کند. به طور معمول، نام یا آدرس نقطه پایانی با عملکردی که ارائه می‌دهد مطابقت دارد.

برای درک بیشتر مفهوم نقاط پایانی و عملیات CRUD، نمونه‌های ساده API در جاوا اسکریپت با استفاده از سرویس RapidAPI بررسی خواهد شد. این پلتفرم به نوعی API Hub عمل می‌کند و به طیف وسیعی از API ها دسترسی می‌دهد. همچنین به کاربران این امکان را می‌دهد که مستقیماً در رابط RapidAPI به نقاط پایانی دسترسی پیدا کرده و آزمایش کنند. به طور کلی در این مطلب به بررسی «JAAS – JSON» به عنوان نوعی سرویس API پرداخته خواهد شد. این API تولید و اصلاح اشیا JSON را تسهیل می‌کند که برای شیوه‌های کدنویسی ارزشمند است.

برای یافتن بخش JAAS API، می‌توان نام آن را در کادر جستجوی سرویس RapidAPI جستجو کرد یا از فهرست دسته‌ها به دسته «Data» رفت و JAAS API را از گزینه های موجود انتخاب کرد. شایان ذکر است که JAAS API برای در پلتفرم RapidAPI رایگان بوده و به کاربر امکان می‌دهد اشیا JSON را مطابق با دلخواه خود ایجاد و دستکاری کند.

آموزش کار با API در جاوا اسکریپت
برای مشاهده تصویر در ابعاد بزرگتر روی آن کلیک کنید.

هنگامی که JAAS API انتخاب شد، صفحه اولیه‌ای که کاربر با آن ربه‌رو خواهد شد، بخش «Endpoints API» است. در این‌جا، تمام اطلاعات ضروری مورد نیاز برای شروع استفاده از API در جاوا اسکریپت یافت می‌شود. زیر بخش API Endpoints نوعی رابط کاربرپسند با گزینه‌های ناوبری، فهرست جامعی از نقاط پایانی موجود، مستندات دقیق برای نقطه پایانی انتخاب شده و قطعه‌های کد متناسب با ۸ زبان برنامه ‌نویسی مختلف ارائه می‌کند. این قطعه کدها به عنوان نقطه شروعی مفید برای کمک به کاربر در نوشتن کد و ادغام JAAS API در پروژه عمل می‌کنند.

ساخت برنامه جاوا اسکریپت با API
برای مشاهده تصویر در ابعاد بزرگتر روی آن کلیک کنید.

در این مطلب تمام اقدامات CRUD اعم از ایجاد، خواندن، به‌روزرسانی و حذف انجام خواهد شد. برای هر یک از این اقدامات، JAAS API نوعی نقطه پایانی مربوطه را ارائه می‌دهد.

برای نشان دادن عملکرد کامل CRUD در جاوا اسکریپت مراحل زیر باید دنبال شود.

مرحله ١: اتصال کتابخانه Axios به فایل HTML برای مدیریت پرس‌وجو که با استفاده از اسکریپت زیر قابل انجام است:

مرحله ٢: ایجاد نوعی ثابت با آدرس API در سرویس RapidAPI که به صورت زیر این کار انجام خواهد گرفت:

const RAPIDAPI_API_URL = 'https://arjunkomath-jaas-json-as-a-service-v1.p.rapidapi.com/';

مرحله ٣: ایجاد نوعی شی/ دیکشنری با هدرهای ثابت برای RapidAPI که عملیات آن به صورت زیر است:

const RAPIDAPI_REQUEST_HEADERS = {
  'X-RapidAPI-Host': 'arjunkomath-jaas-json-as-a-service-v1.p.rapidapi.com',
  'X-RapidAPI-Key': '7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json'
};

مرحله ٤: ایجاد نوعی شی برای کار با آن و متغیری برای ذخیره شناسه که به صورت زیر این کار قابل انجام است:

let STUDENT_ID = '';
const student = {
  name: 'John',
  surname: 'Doe',
  age: 18
};

مرحله ٥: ایجاد درخواست POST برای ساخت شی که به صورت زیر انجام خواهد گرفت:

// Making a POST request using an axios instance from a connected library
axios.post(RAPIDAPI_API_URL, student, { headers: RAPIDAPI_REQUEST_HEADERS })
  // Handle a successful response from the server
  .then(response => {
          // Getting a data object from response that contains the necessary data from the server
          const data = response.data;
          console.log('data', data);

          // Save the unique id that the server gives to our object
          STUDENT_ID = data._id;
  })
  // Catch and print errors if any
  .catch(error => console.error('On create student error', error));

در اولین پارامتر تابع Axios.post

، URL

 به نقطه پایانی API ارسال خواهد شد. پارامتر دوم داده‌ای است که کاربر می‌خواهد در درخواست ارسال کند که در این حالت شی student

 است. پارامتر سوم نوعی شی محسوب می‌شود که حاوی هدرهای درخواست بوده که به وسیله RAPIDAPI_REQUEST_HEADERS

 مشخص شده است. پس از انجام درخواست، پاسخ با استفاده از متد then()‎

 مدیریت می‌شود. در داخل متد then()‎

می‌توان با استفاده از answer.data

 به داده‌های پاسخ دسترسی داشت. در این حالت داده‌های پاسخ در متغیر داده ذخیره می‌شوند. وقتی داده‌ها با استفاده از console.log (‘data’, data)

 وارد کنسول شوند، خروجی JSON زیر دریافت می‌شود:

{
  "_id": "3060e599-b758-44cc-9eb4-8fda050b76d2",
  "created_at": 1563051939620,
  "body": {
  "name": "John",
  "surname": "Doe",
  "age": 18
  }
}

اکنون متغیر STUDENT_ID

 حاوی خط زیر است:

"3060e599-b758-44cc-9eb4-8fda050b76d2"

مرحل ٦: در این مرحله درخواست GET برای بازیابی جزئیات شی student

خاص آزمایش می‌شود. برای این هدف از کتابخانه axios

 برای ارسال درخواست GET به نقطه پایانی API استفاده شده است که قطعه کد آن به صورت زیر است:

axios.get(`${RAPIDAPI_API_URL}/${STUDENT_ID}`, { headers: RAPIDAPI_REQUEST_HEADERS })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => console.error('On get student error', error));

در قطعه کد بالا، URL API

 الحاق شده با شناسه student

به عنوان اولین پارامتر به تابع axios.get

 ارسال می‌شود. پارامتر دوم از هدرهای ضروری هستند. وقتی پاسخ با موفقیت دریافت شد، answer.data

 به کنسول وارد می‌شود که حاوی جزئیات شی student

است. پس از اجرای این کد باید خروجی زیر در کنسول مشاهده شود:

{
  "_id": "3060e599-b758-44cc-9eb4-8fda050b76d2",
  "body": {
    "name": "John",
    "surname": "Doe",
    "age": 18
  },
  "created_at": 1563051939620
}

خروجی بالا نشان می‌دهد که درخواست GET با موفقیت شی student

را با شناسه مشخص شده بازیابی کرده است.

مرحله ٧: این مرحله برای یجاد نوعی درخواست PUT برای به‌روزرسانی شی است. برای انجام درخواست PUT و اصلاح شیئی که قبلا در سرور ایجاد شده می‌توان شی student

را با تغییرات مورد نظر به‌روزرسانی کرد. در این حالت، ویژگی age

 شی student

به 20

 و ویژگی score

 به 4.0

 تغییر داده خواهد شد و در عین حال سایر ویژگی‌ها دست نخورده باقی می‌ماند. در اینجا کد به روز شده برای درخواست PUT آمده است:

axios.put(`${RAPIDAPI_API_URL}/${STUDENT_ID}`, student, { headers: RAPIDAPI_REQUEST_HEADERS })
      .then(response => {
          console.log(response.data);
      })
      .catch(error => console.error('On change student error', error))

در کد بالا پارامتر اول نشانگر URL به شی مورد نظر، پارامتر دوم student

از قبل به روز شده و سومین مورد از هدرهای ضروری هستند که در نتیجه پس از اجرای کد، پاسخ زیر را از سرور داریم:

{
  "_id": "3060e599-b758-44cc-9eb4-8fda050b76d2",
  "body": {
  "name": "John",
  "surname": "Doe",
  "age": 20,
  "score": 4
  }
}

با توجه به خروجی بالا _id‎‎

 درست است و داده‌ها به‌روز می‌شوند.

مرحله ٨: ارسال درخواست DELETE برای حذف شی که این عمل نیز به صورت زیر صورت خواهد گرفت:

axios.delete(`${RAPIDAPI_API_URL}/${STUDENT_ID}`, { headers: RAPIDAPI_REQUEST_HEADERS })
  .then(response => {
    const data = response.data;
    console.log('data', data);
  })
  .catch(error => console.error('On delete student error', error));

پارامترها مانند مثال‌های قبلی مشخص شده‌اند که نتیجه آن به شرح زیر است:

{
  "_id": "3060e599-b758-44cc-9eb4-8fda050b76d2",
  "message": "Data Deleted"
}

مرحله ٩: ارسال درخواست GET با استفاده از شناسه برای تأیید حذف شی که به صورت زیر انجام می‌گیرد:

// Making a GET request using an axios instance from a connected library
axios.get(`${RAPIDAPI_API_URL}/${STUDENT_ID}`, { headers: RAPIDAPI_REQUEST_HEADERS })
  .then(response => {
          console.log(response.data);
  })
  .catch(error => console.error('On get student error', error))

با این کار پاسخی دریافت خواهد شد که این شی دیگر وجود ندارد. همه چیز همانطور که انتظار داشتیم پیش رفت:

{
  "errors": [
  "Item not found"
  ]
}

باید مطمئن شد که 7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx‎

 در RAPIDAPI_REQUEST_HEADERS

 با کلید RapidAPI واقعی جایگزین شود. مراحل فوق کل عملکرد CRUD را با استفاده از جاوا اسکریپت و کتابخانه Axios برای تعامل با API نشان می‌دهند.

مطلب پیشنهادی:

API-های شخص ثالث در جاوا اسکریپت — راهنمای جامع

شروع مطالعه

اتصال به API در جاوا اسکریپت

برای ایجاد برنامه جاوا اسکریپت با قابلیت استفاده از API، می‌توان مراحلی را که در ادامه آمده‌اند در پیش گرفت.

آموزش پروژه‌ محور جاوا اسکریپت، CSS و HTML – طراحی صفحه فرود واکنشگرا
فیلم آموزش پروژه‌ محور جاوا اسکریپت، CSS و HTML – طراحی صفحه فرود واکنشگرا در تم آف

کلیک کنید

مرحله ١. دریافت کلید API

برای دریافت کلید API باید مراحل زیر را انجام داد:

  • شناسایی API مورد نیاز و ثبت نام در وب‌سایت یا پلتفرم مربوطه آن.
  • انجام مراحل ثبت نام.
  • دریافت کلید API مد نظر پس از ثبت نام.

دریافت کلید API

نکته: کلید API نوعی عبارت «رشته‌ای» (استرینگ | String) منحصر به فرد از حروف و اعداد است که هنگام درخواست به API کاربر را شناسایی می‌کند.

مرحله ۲. آزمایش نقاط پایانی API در جاوا اسکریپت

در این مرحله باید نقاط پایانی API مورد آزمایش قرار بگیرند که برای این هدف باید مراحل زیر را دنبال کرد:

  • هنگامی که کلید API دریافت شد، می‌توان نقاط پایانی API را آزمایش کرد تا مطمئن شد که مطابق انتظار کار می‌کنند یا خیر.
  • در صورت کار با RapidAPI می‌توان به قسمت API مورد علاقه خود رفته و در آن مشترک شد.
  • در صفحه API، می‌توان فهرستی از نقاط پایانی موجود و مستندات نحوه استفاده از آن‌ها را یافت.
  • می‌توان از جاوا اسکریپت و کتابخانه Axios برای درخواست به نقطه پایانی مورد نظر و آزمایش عملکرد آن استفاده کرد.
  •  نوشتن کدهای جاوا اسکریپت برای درخواست‌های API با استفاده از کلید API و نقطه پایانی مناسب.
  • آزمایش قطعه کد در کنسول مرورگر برای اطمینان از اینکه آیا درخواست‌ها داده‌های مورد انتظار را برمی‌گرداند یا خیر.
نقاط پایانی API در جاوا اسکریپت

مرحله ۳. ساخت اولین برنامه جاوا اسکریپت با API

برای ساخت اولین برنامه با قابلیت استفاده از API در جاوا اسکریپت باید به صورت مراحل زیر عمل کرد:

  1. هنگامی که تأیید شد نقاط پایانی API به درستی کار می‌کنند، می‌توان شروع به ایجاد برنامه جاوا اسکریپت کرد که API را یکپارچه می‌کند.
  2. باید در مورد عملکردی که کاربر می‌خواهد در برنامه خود پیاده‌سازی کند، تصمیم گرفته شود و تعیین کند که از کدام نقاط پایانی API باید استفاده کند.
  3. ایجاد فایل HTML و پیوند آن به فایل جاوا اسکریپتی که حاوی منطق برنامه است.
  4. استفاده از کتابخانه Axios برای درخواست HTTP به نقاط پایانی API در کد جاوا اسکریپت.
  5. قرار دادن کلید API را در هدرهای درخواست به منظور احراز هویت درخواست‌ها.
  6. پردازش پاسخ‌های API و به‌روزرسانی رابط کاربری برنامه بر این اساس.
  7. اجرای برنامه در مرورگر وب و بررسی اینکه آیا برنامه به درستی با API تعامل دارد و داده‌های مورد نظر را نمایش می‌دهد یا خیر.
برنامه جاوا اسکریپت با API

با دنبال کردن مراحل فوق، می‌توان نوعی برنامه جاوا اسکریپت ایجاد کرد که با API تعامل دارد و داده‌ها را بازیابی می‌کند.

مطلب پیشنهادی:

تشخیص چهره در مرورگر با API جاوا اسکریپت — به زبان ساده

شروع مطالعه

ساخت برنامه جاوا اسکریپت با API

در این بخش به صورت عملی و به عنوان مثالی جامع برنامه‌ای به عنوان تحلیلگر احساسات با قابلیت استفاده از API در جاوا اسکریپت پیاده‌سازی می‌شود. برای این کار ابتدا باید تصور کنیم که محصول ما با چنان استقبال چشمگیری از کاربران مواجه شده است که آن‌ها احساسات و عواطف خود را در مورد آن در نظرات بیان می‌کنند. برای کمک به کاربران در درک ماهیت احساسات خود، با افزودن عملکردی برای تجزیه و تحلیل احساسات نظرات آن‌ها، می‌توان فرم استاندارد نظرات را بهبود بخشید.

مجموعه آموزش جاوا اسکریپت (JavaScript)
فیلم مجموعه آموزش جاوا اسکریپت (JavaScript) در تم آف

کلیک کنید

برای انجام این کار، می‌توان از «Text-Processing API» استفاده کرد که در سرویس RapidAPI قابل دسترسی است. این API تحت شرایط پولی کار می‌کند ولی با این حال به تعداد محدودی درخواست پردازش متن در روز به صورت رایگان اجازه می‌دهد.

ساخت اپ جاوا اسکریپت با API

از آنجایی که در این مطلب فقط چند نظر را برای اهداف آزمایشی پردازش می‌شوند، این محدودیت رایگان برای نیازهای این مطلب آموزش استفاده از API در جاوا اسکریپت کافی است. می‌توان از کتابخانه Axios برای ارسال درخواست‌ها به Text-Processing API استفاده کرد. علاوه بر این، برای کدگذاری صحیح درخواست‌ها به کتابخانه «Qs» نیاز خواهد بود. در ادامه مراحل کامل استفاده از این API برای اهداف گفته شده آمده است.

مرحله ۱. دریافت کلید API برای ساخت برنامه

پس از انجام امور ثبت نام در پلتفرمRapidAPI، می‌توان کلید سرویس مد نظر را دریافت کرد و این برای شروع کار با Text-Processing API کافی است. برای این هدف می‌توان روی دکمه ثبت نام یا «Sign Up» در منوی پلتفرم نام برده اقدام به این کار کرد.

API در Javascript

مرحله ۲. آزمایش نقاط پایانی API

برای آزمایش نقاط پایانی API و تجزیه و تحلیل احساسات نظرات کاربران، ما بر روی نقطه پایانی ارائه شده به وسیله Text-Processing API تمرکز خواهیم کرد. با ارسال نظرات آزمایشی منفی و مشاهده پاسخ API می توان این آزماشی را مستقیماً در مرورگر انجام دهیم.

ای پی آی در جاوا اسکریپت
برای مشاهده تصویر در اندازه بزرگتر روی آن کلیک کنید.

هنگامی که درخواست با نوعی نظر آزمایشی منفی به نقطه پایانی تحلیلگر احساسات ارائه شود، نوعی پاسخ JSON دریافت خواهد شد که نشان دهنده ارزیابی احساسات است. اگر API ارزیابی احساسات منفی را برای نظر آزمایشی برگرداند، نشان می‌دهد که همه چیز به درستی کار می‌کند.

آموزش مقدماتی نود جی اس Node.js
فیلم آموزش مقدماتی نود جی اس Node.js در تم آف

کلیک کنید

مرحله ۳. ساخت اولین برنامه با API در جاوا اسکریپت

برای ایجاد برنامه برای تجزیه و تحلیل احساسات نظرات از سه فایل « index.html

» ،« style.css

» و « text-processing.js

» استفاده خواهد شد. کار با فایل index.html

شروع خواهد شد و برای این کار ابتدا باید استایل‌ها را با افزودن کد زیر وارد کرد:


در مرحله بعد، باید کتابخانه Axios برای درخواست‌ها به صورت زیر اضافه شود:



همچنین باید کتابخانه Qs را نیز اضافه کرد. این کتابخانه به تغییر داده‌ها قبل از ارسال کمک می‌کند:


در نهایت، فایل جاوا اسکریپت اضافه می‌شود که مراحل کار را به هم مرتبط می‌کند:


در کل قطعه کد کلی HTML برنامه مد نظر به صورت زیر است:




  
  Text Processing

  
  


  

Comment text analysys

همچنین فایل style.css

 حاوی محتویات زیر است:

* {
  font-family: "Arial", Arial, sans-serif;
  font-weight: 400;
  padding: 0;ь
  margin: 0;
  border: 0;
}
body {
  padding: 20px;
  display: flex;
  justify-content: center;
  align-items: center;
}
label, textarea {
  display: block;
}
.main {
  padding: 10px;
  width: 35%;
  box-shadow: 0 0 10px rgba(0,0,0,0.5);
}
.main-header {
  text-align: center;
  margin-bottom: 20px;
}
.main-input-comment { margin-bottom: 20px; }
.main-comment-area {
  width: 95%;
  border: #ced4da 1px solid;
  border-radius: 10px;
  resize: none;
  padding: 10px;
  margin-bottom: 10px;
  font-size: 16px;
}
.main-analyze-button {
  width: 100%;
  padding: 5px;
  border: 1px solid #007bff;
  background-color: #007bff;
  border-radius: 7px;
  color: white;
  text-align: center;
  font-size: 16px;
  outline: none;
}
.main-analyze-button::-moz-focus-inner {border: 0;}
.main-analyze-button:hover {
  background-color: #0069d9;
  border-color: #0069d9;
  cursor: pointer;
}
.main-result-block { text-align: center; }
.pos { color: green; }
.neg { color: darkred; }
.neutral { color: gray }

.invisible { display: none; }

حال در این مرحله از ساخت برنامه با قابلیت استفاده از API در جاوا اسکریپت نوبت به ایجاد فایل text-processing.js

 است که برای این هدف باید ابتدا ثابت‌هایی مانند URL

درخواست و هدرهای درخواست را به صورت زیر نوشت:

// Text-Processing API Url
const API_URL = 'https://japerk-text-processing.p.rapidapi.com/sentiment/';

// RapidAPI request headers
const REQUEST_HEADERS = {
  'X-RapidAPI-Host': 'japerk-text-processing.p.rapidapi.com'
  , 'X-RapidAPI-Key': '7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  , 'Content-Type': 'application/x-www-form-urlencoded'
};

اکنون باید بر اساس متنی که به وسیله کاربر وارد می‌شود درخواستی به صورت زیر ایجاد کرد:

const analyzeComment = (comment, callback) => {
  // Creating an object to send to the server
  const data = {
          text: comment
          , language: 'english'
  };
  // Encoding data for application/x-www-form-urlencoded content type
  const formattedData = Qs.stringify(data);
  // POST request to server
  axios.post(API_URL, formattedData, { headers: REQUEST_HEADERS })
          .then(response => {
             const data = response.data;
            // Calling a callback function with data from the server
            callback(data)
          })
          .catch(error => console.error(error))
};

در کد بالا، comment

 متن وارد شده به وسیله کاربر را نشان می‌دهد و callback

 تابعی است که پاسخ سرور را در آینده مدیریت می‌کند. برای شروع، شی data

 بر اساس اسناد API ایجاد شده است. سپس این شی با استفاده از کتابخانه Qs به فرمت خاص، « application/x-www-form-urlencoded

» می‌شود که در نتیجه، باید درخواستی مشابه نمونه‌های قبلی ارائه کرد:

  • گرفتن نتیجه
  • فراخوانی تابع callback
  • ارسال پاسخ سرور به تابع callback
آموزش React.JS – استفاده از Fetch و Axios برای اتصال به API
فیلم آموزش React.JS – استفاده از Fetch و Axios برای اتصال به API در تم آف

کلیک کنید

اکنون باید تابعی را تعریف کرد که بتوان آن را به عنوان callback

به مرحله قبل ارسال کرد. این تابع برخی از اقدامات را با نتیجه کار انجام خواهد داد و به طور خاص، آن را به کاربر نمایش می‌دهد.

const displayResult = result => {
  // Remove invisible class for main-result-block
  const resultBlockElement = document.getElementById('main-result-block');
  resultBlockElement.classList.remove('invisible');

  // Setting the color of the result text depending on the response label
  const label = result.label;
  const resultElement = document.getElementById('result');
  resultElement.setAttribute('class', label);
  let resultText = '';

  // Choosing the result text depending on response label
  switch (label) {
      case 'pos':
          resultText = 'Wow! Your comment is very positive!';
          break;
      case 'neg':
          resultText = 'Negative comment =(';
          break;
      case 'neutral':
          resultText = 'Simple comment =)';
          break;
      default:
          resultText = 'Hmmm, can't understand your comment';
  }

  // Setting the result text
  resultElement.textContent = resultText;
};

علاوه بر این، ممکن است به تابعی برای رسیدگی به سناریویی نیاز داشته باشیم که در آن کاربر چیزی را وارد نکرده و دکمه را فشار داده است. در این حالت، می‌توان بلوک نتیجه را با اعمال کلاس invisible

 بر روی آن پنهان کرد و پیام مربوطه را نمایش داد که قطعه کد انجام آن به صورت زیر است:

const handleEmptyComment = () => {
  const resultBlockElement = document.getElementById('main-result-block');
  resultBlockElement.classList.add('invisible');
  return alert('Your comment is empty =(');
};

همچنین باید تابعی به نام handler

 ایجاد گردد که با فشار دادن دکمه اجرا شود و تمام عملکردهایی را که قبلاً نوشته شده است را ترکیب کند. قطعه کد انجام این کار نیز به صورت زیر است:

// Button click handler
const onAnalyzeButtonClick = () => {
  // Getting a textarea element with a comment
  const commentElement = document.getElementById('comment');
  // Getting comment text
  const commentText = commentElement.value.trim();

  // Handle empty comment
  if (!commentText) {
          return handleEmptyComment();
  }
  // Calling the API and passing the result with the displayResult as a callback function
  return analyzeComment(commentText, displayResult);
};

در اینجا نسخه کامل و به‌روز شده فایل text-processing.js

 آمده است:

// Text-Processing API Url
const API_URL = 'https://japerk-text-processing.p.rapidapi.com/sentiment/';

// RapidAPI request headers
const REQUEST_HEADERS = {
  'X-RapidAPI-Host': 'japerk-text-processing.p.rapidapi.com'
  , 'X-RapidAPI-Key': '768d224b32mshbe5f76705cbfd9bp154850jsnba7a2201e140'
  , 'Content-Type': 'application/x-www-form-urlencoded'
};

// Button click handler
const onAnalyzeButtonClick = () => {
  // Getting a textarea element with a comment
  const commentElement = document.getElementById('comment');
  // Getting comment text
  const commentText = commentElement.value.trim();

  // Handle empty comment
  if (!commentText) {
          return handleEmptyComment();
  }
  // Calling the API and passing the result with the displayResult as a callback function
  return analyzeComment(commentText, displayResult);
};

const analyzeComment = (comment, callback) => {
  // Creating an object to send to the server
  const data = {
          text: comment
          , language: 'english'
  };
  // Encoding data for application/x-www-form-urlencoded content type
  const formattedData = Qs.stringify(data);
  // POST request to server
  axios.post(API_URL, formattedData, { headers: REQUEST_HEADERS })
          .then(response => {
            const data = response.data;
            // Calling a callback function with data from the server
            callback(data)
          })
          .catch(error => console.error(error))
};

const handleEmptyComment = () => {
  const resultBlockElement = document.getElementById('main-result-block');
  resultBlockElement.classList.add('invisible');
  return alert('Your comment is empty =(');
};

const displayResult = result => {
  // Remove invisible class for main-result-block
  const resultBlockElement = document.getElementById('main-result-block');
  resultBlockElement.classList.remove('invisible');

  // Setting the color of the result text depending on the response label
  const label = result.label;
  const resultElement = document.getElementById('result');
  resultElement.setAttribute('class', label);
  let resultText = '';

  // Choosing the result text depending on response label
  switch (label) {
      case 'pos':
          resultText = 'Wow! Your comment is very positive!';
          break;
      case 'neg':
          resultText = 'Negative comment =(';
          break;
      case 'neutral':
          resultText = 'Simple comment =)';
          break;
      default:
          resultText = 'Hmmm, can't understand your comment';
  }

  // Setting the result text
  resultElement.textContent = resultText;
};

حال «کنترل کننده کلیک» ( onAnalyzeButtonClick

 ) به دکمه اضافه می‌شود.

حال نمونه برنامه با قابلیت استفاده از API در جاوا اسکریپت آماده است. اکنون هر کاربر می‌تواند درک کند که نظرات آن‌ها چه احساساتی را بیان می‌کنند. خروجی کار انجام گرفته به صورت تصویر است:

استفاده از API در جاوا اسکریپت

سخن پایانی

در این مطلب آموزشی از «مجله تم آف» به قابلیت‌های جاوا اسکریپت هنگام کار با REST API پرداخته شد. همچنین مفهوم عملیات CRUD (ایجاد، خواندن، به‌روزرسانی، حذف) بررسی و و نحوه پیاده‌سازی آن‌ها با استفاده از جاوا اسکریپت نشان داده شد. علاوه بر این، نوعی برنامه کاربردی با قابلیت استفاده از API در جاوا اسکریپت ایجاد شد که قدرت تجزیه و تحلیل احساسات متنی با هوش مصنوعی را در خود جای داده است. همچنین با استفاده از کتابخانه‌های جاوا اسکریپت مانند Axios، ما توانستیم درخواست‌های «HTTP» را به نقاط پایانی API، رسیدگی به پاسخ‌ها و انجام اقداماتی مانند ایجاد اشیا، بازیابی داده‌ها، به‌روزرسانی اطلاعات و حذف منابع انجام دهیم.

مجموعه آموزش طراحی و برنامه ‌نویسی سایت
فیلم مجموعه آموزش طراحی و برنامه ‌نویسی سایت در تم آف

کلیک کنید

علاوه بر این، در این مطلب از API-های خارجی مانند API پردازش متن RapidAPI برای تجزیه و تحلیل احساسات نظرات کاربران استفاده شد. با ادغام این قابلیت در برنامه، به کاربران این امکان داده می‌شود تا بینشی در مورد ماهیت احساسات خود نسبت به محصول یا خدمات خاصی به دست آورند. در کل به وسیله این مثا‌ل‌ها و توضیحات ارائه شده در این مطلب، کاربرد عملی جاوا اسکریپت در کار با API بیان شد. به امید اینکه این مطلب برای کاربران عزیز مجله مفید بوده باشد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.