کتابخانه پویا


شرکتی که شما در آن کار می‌کنید پروژه‌ای مبتنی بر وب را برای یک کتابخانه آغاز کرده است و مقداری از کدهای سمت client را نوشته است. از شما خواسته شده تا این بخش را تکمیل کنید.

پروژه را از اینجا دانلود کنید و از حالت فشرده خارج کنید.

برای اجرا، به جای باز کردن مستقیم index.html با مرورگر، حتماً پوشه اصلی پروژه را به وسیله یک وب‌سرور سرو کنید. یک راه ساده برای این کار استفاده از وب‌سرور پایتون است.

با پایتون ۲:

cd bookstore
python -m SimpleHTTPServer 8000
Plain text

با پایتون ۳:

cd bookstore
python -m http.server 8000
Plain text

با این دستورات، پوشه پروژه بر روی پورت ۸۰۰۰ سرو می‌شود. با مراجعه به آدرس localhost:8000 پروژه را مشاهده کنید و صفحات مختلف آن را ببینید.

همان‌طور که می‌بینید ۳ صفحه وجود دارد:

  1. صفحه اصلی که لیست کلیه کتاب‌ها در آن قرار دارد، با آدرس http://localhost:8000/#.
  2. صفحه مشخصات یک کتاب، با آدرس http://localhost:8000/#book/BOOK_ID.
  3. صفحه لیست کتاب‌های یک ژانر، با آدرس http://localhost:8000/#genre/GENRE_NAME.

اما مشکلی که وجود دارد این است که محتوای تمام این صفحات static است. از شما خواسته شده تا پروژه را طوری تغییر دهید که محتوای صفحات با درخواست ajax از localhost:8000/api دریافت شود.

ابتدا کدهای پروژه را بخوانید و با نحوه کار پروژه آشنا شوید. همان‌طور که می‌بینید از کتابخانه‌های Hogan.js و Navigo استفاده شده است. با باز کردن فایل main.js مشاهده می‌کنید که ۴ کار از شما به صورت TODO خواسته شده است. این ۴ کار را انجام دهید. سپس پروژه تکمیل‌شده را به صورت Zip فشرده کنید و به عنوان پاسخ آپلود کنید.

توضیحات API🔗

نمونه‌هایی از پاسخ سرور API در پوشه api قرار داده شده است. نگاهی به فایل‌های این پوشه بیندارید. با توجه به این که پروژه را با وب‌سرور سرو کرده‌اید، با فایل‌های این پوشه، API شبیه‌سازی شده است و می‌توانید با jQuery.get یا توابع مشابه، به آدرس‌های زیر درخواست ajax بفرستید و پاسخ آن را دریافت کنید:

/api/get_all_books
/api/get_book/BOOK_ID
/api/get_genre_books/GENRE_NAME
Plain text

برای آشنایی با ساختار JSON دریافتی از سرور نیز فایل‌های موجود در پوشه api را ببینید.

همچنین توجه کنید که وب‌سرور، نوع پاسخی که ارسال می‌کند را json تعیین نمی‌کند. بنابراین هنگام صدا زدن jQuery.get، نوع پاسخ موردانتظار (dataType) را json تعیین کنید. و یا این که خودتان متن JSON دریافتی را parse کنید.

نکته🔗

دقت کنید که پروژه را به گونه‌ای Zip کنید که فایل index.html و پوشه‌های static و templates در ریشه فایل Zip قرار داشته باشند (داخل پوشه دیگری نباشند).

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.