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

راهنمای وب سرویس


این وب‌سرویس دارای متدهای گوناگون برای دریافت و ثبت اطلاعات است، در زمان استفاده از این متدها باید به پارامترهای مشخص شده در راهنما توجه کنید. در این وب‌سرویس چهارنوع پارامتر وجود دارد:
۱- Header- این پارامترها به هدر درخواست اضافه می‌شوند.
۲- Query- پارامترهای کوئری در ادامه‌ی آدرس و بعد از علامت '?' قرار می‌گیرند.
۳- Path- در بخشی از آدرس قرار می‌گیرند.
۴- Body- این نوع از پارامترها به عنوان یک خصوصیت در یک شیء Json داخل body درخواست قرار می‌گیرند.

برای استفاده از این وب‌سرویس نیاز به دریافت هیچگونه api_key ندارید اما توجه داشته باشید که اطلاعات ثبت شده توسط شما در این وب‌سرویس، بعد از 10 دقیقه از روی آن پاک می‌شود. البته برای اینکه توسعه‌دهندگان، تجربه‌ی کار با متدهایی که نیاز به Authentication دارند رو هم بدست بیارن، یکی از متدها که برای دریافت اطلاعات کاربر هست نیاز به توکن JWT دارد که باید بعد از ثبت‌نام کاربر جدید از متد لاگین بگیرید.

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

دریافت لیست فیلم‌ها

با استفاده از این متد می‌توانید لیست فیلم‌های موجود در این وب‌سرویس را دریافت کنید. (فیلم‌های ثبت شده توسط کاربران وب‌سرویس در این لیست حضور ندارند)

  نام پارامتر نوع پارامتر توضیحات
دلخواه page query-عدد شماره صفحه‌ی اطلاعات

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

{"data":[{"id":1,"title":"The Shawshank Redemption","poster":"http://moviesapi.ir/images/tt0111161_poster.jpg","genres":["Crime","Drama"],"images":["http://moviesapi.ir/images/tt0111161_screenshot1.jpg","http://moviesapi.ir/images/tt0111161_screenshot2.jpg","http://moviesapi.ir/images/tt0111161_screenshot3.jpg"]},{"id":2,"title":"The Godfather","poster":"http://moviesapi.ir/images/tt0068646_poster.jpg","genres":["Crime","Drama"],"images":["http://moviesapi.ir/images/tt0068646_screenshot1.jpg","http://moviesapi.ir/images/tt0068646_screenshot2.jpg","http://moviesapi.ir/images/tt0068646_screenshot3.jpg"]}],"metadata":{"current_page":1,"per_page":2,"page_count":25,"total_count":250}}

جستجوی فیلم براساس نام

با استفاده از این متد می‌توانید در بین فیلم‌های وب‌سرویس و فیلم‌های ثبت‌شده توسط کاربران وب‌سرویس جستجو کنید.

  نام پارامتر نوع پارامتر توضیحات
اجباری q query-رشته نام فیلم
دلخواه page query-عدد شماره صفحه‌ی اطلاعات

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

{"data":[{"id":1,"title":"The Shawshank Redemption","poster":"http://moviesapi.ir/images/tt0111161_poster.jpg","genres":["Crime","Drama"],"images":["http://moviesapi.ir/images/tt0111161_screenshot1.jpg","http://moviesapi.ir/images/tt0111161_screenshot2.jpg","http://moviesapi.ir/images/tt0111161_screenshot3.jpg"]},{"id":2,"title":"The Godfather","poster":"http://moviesapi.ir/images/tt0068646_poster.jpg","genres":["Crime","Drama"],"images":["http://moviesapi.ir/images/tt0068646_screenshot1.jpg","http://moviesapi.ir/images/tt0068646_screenshot2.jpg","http://moviesapi.ir/images/tt0068646_screenshot3.jpg"]}],"metadata":{"current_page":1,"per_page":2,"page_count":25,"total_count":250}}

ثبت فیلم جدید(ارسال تصویر بصورت Base64)

با استفاده از این متد می‌توانید یک فیلم جدید در وب‌سرویس ثبت کنید.

  نام پارامتر نوع پارامتر توضیحات
اجباری title body-رشته نام فیلم
اجباری imdb_id body-رشته شناسه‌ی فیلم در سایت IMDB
اجباری country body-رشته کشور سازنده‌ی فیلم
اجباری year body-عدد سال ساخت فیلم
دلخواه director body-رشته نام کارگردان فیلم
دلخواه imdb_rating body-رشته درجه‌ی فیلم در سایت IMDB
دلخواه imdb_votes body-رشته تعداد رای‌ فیلم در سایت IMDB
دلخواه poster body-رشته تصویر پوستر فیلم که به رشته‌ی Base64 تبدیل شده است

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

{"id":270,"title":"Arrival","poster":"http://moviesapi.ir/images/user-184725432658c47c82f1dde4.966303841489271938-poster.png","year":2016,"director":"","country":"USA","imdb_rating":"8.1","imdb_votes":"204,081","imdb_id":"tt2543164"}

ثبت فیلم جدید(ارسال تصویر بصورت درخواست Multipart)

با استفاده از این متد می‌توانید یک فیلم جدید در وب‌سرویس ثبت کنید.

  نام پارامتر نوع پارامتر توضیحات
اجباری title رشته نام فیلم
اجباری imdb_id رشته شناسه‌ی فیلم در سایت IMDB
اجباری country رشته کشور سازنده‌ی فیلم
اجباری year عدد سال ساخت فیلم
دلخواه director رشته نام کارگردان فیلم
دلخواه imdb_rating رشته درجه‌ی فیلم در سایت IMDB
دلخواه imdb_votes رشته تعداد رای‌ فیلم در سایت IMDB
دلخواه poster فایل تصویر پوستر فیلم

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

{"id":270,"title":"Arrival","poster":"http://moviesapi.ir/images/user-184725432658c47c82f1dde4.966303841489271938-poster.png","year":2016,"director":"","country":"USA","imdb_rating":"8.1","imdb_votes":"204,081","imdb_id":"tt2543164"}

دریافت اطلاعات یک فیلم

با استفاده از این متد و شناسه‌ی فیلم، می توانید تمامی اطلاعات موجود در رابطه با یک فیلم را دریافت کنید.

  نام پارامتر نوع پارامتر توضیحات
اجباری movie_id path-عدد شناسه‌ی فیلم

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

{"id":1,"title":"The Shawshank Redemption","poster":"tt0111161_poster.jpg","year":"1994","rated":"R","released":"14 Oct 1994","runtime":"142 min","director":"Frank Darabont","writer":"Stephen King (short story \"Rita Hayworth and Shawshank Redemption\"), Frank Darabont (screenplay)","actors":"Tim Robbins, Morgan Freeman, Bob Gunton, William Sadler","plot":"Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.","country":"USA","awards":"Nominated for 7 Oscars. Another 19 wins & 30 nominations.","metascore":"80","imdb_rating":"9.3","imdb_votes":"1,738,596","imdb_id":"tt0111161","type":"movie","genres":["Crime","Drama"],"images":["http://moviesapi.ir/images/tt0111161_screenshot1.jpg","http://moviesapi.ir/images/tt0111161_screenshot2.jpg","http://moviesapi.ir/images/tt0111161_screenshot3.jpg"]}

دریافت لیست ژانرها

با استفاده از این متد می‌توانید لیست همه ژانرهای موجود در وب‌سرویس را دریافت کنید.

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

[{"id":1,"name":"Crime"},{"id":2,"name":"Drama"}]

دریافت لیست فیلم‌های یک ژانر خاص

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

  نام پارامتر نوع پارامتر توضیحات
اجباری genre_id path-عدد شناسه‌ی ژانر
دلخواه page query-عدد شماره صفحه‌ی اطلاعات

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

{"data":[{"id":1,"title":"The Shawshank Redemption","poster":"http://moviesapi.ir/images/tt0111161_poster.jpg","genres":["Crime","Drama"],"images":["http://moviesapi.ir/images/tt0111161_screenshot1.jpg","http://moviesapi.ir/images/tt0111161_screenshot2.jpg","http://moviesapi.ir/images/tt0111161_screenshot3.jpg"]},{"id":2,"title":"The Godfather","poster":"http://moviesapi.ir/images/tt0068646_poster.jpg","genres":["Crime","Drama"],"images":["http://moviesapi.ir/images/tt0068646_screenshot1.jpg","http://moviesapi.ir/images/tt0068646_screenshot2.jpg","http://moviesapi.ir/images/tt0068646_screenshot3.jpg"]}],"metadata":{"current_page":1,"per_page":2,"page_count":25,"total_count":250}}

ثبت کاربر جدید

با استفاده از این متد می‌توانید یک کاربر جدید جدید در وب‌سرویس ثبت‌نام کنید. اطلاعات کاربر (نام، ایمیل و پسورد) باید با فرمت Json در ‌Body درخواست ارسال شوند.

  نام پارامتر نوع پارامتر توضیحات
اجباری email رشته پست الکترونیکی کاربر
اجباری password رشته رمز عبور
اجباری name رشته نام کاربر

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

{"id":23,"name":"Abbas Ov","email":"abbas@oveissi.ir","created_at":"2020-10-10 12:12:23","updated_at":"2020-10-10 12:12:23"}

لاگین و دریافت توکن

با استفاده از این متد می‌توانید در سیستم لاگین کرده و با دریافت توکن، از متدهایی که به توکن نیاز دارند استفاده کنید. توجه کنید اطلاعات بصورت form-data به وب‌سرویس ارسال شوند.

  نام پارامتر نوع پارامتر توضیحات
اجباری grant_type رشته از عبارت password برای این فیلد استفاده کنید
اجباری username رشته نام کاربری
اجباری password رشته رمز عبور

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

{"token_type":"Bearer","expries_in":16537295,"access_token":"NJhsHG6TFC5kdTEM34cMzAxFtfs34x...","refresh_token":"eNUSyyhn3kmIJ64jnUH56DMsfNUhN4..."}

رفرش کردن توکن

متد لاگین به شما access_token و refresh_token میده. برای درخواست‌هایی که نیاز به توکن دارند باید از access_token استفاده کنید. هر access_token بعد ۵ دقیقه منقضی می‌شود. برای دریافت توکن جدید باید از این متد و refresh_token استفاده کنید تا access_token جدید بگیرید.

  نام پارامتر نوع پارامتر توضیحات
اجباری grant_type رشته از عبارت refresh_token برای این فیلد استفاده کنید
اجباری refresh_token رشته رفرش توکن

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

{"token_type":"Bearer","expries_in":16537295,"access_token":"NJhsHG6TFC5kdTEM34cMzAxFtfs34x...","refresh_token":"eNUSyyhn3kmIJ64jnUH56DMsfNUhN4..."}

گرفتن اطلاعات کاربر (نیاز به توکن دارد)

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

POST /api/user

  نام پارامتر نوع پارامتر توضیحات
اجباری authorization header-رشته وقتی توکن رو توی Header میذارید، اون Bearer اولش یادتون نداره.
دلخواه accept header-رشته همیشه مقدار را application/json بذارید تا اگر خطایی رخ داد وب سرویس با فرمت Json پاسخ دهد.

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

{"id":23,"name":"Abbas Ov","email":"abbas@oveissi.ir","created_at":"2020-10-10 12:12:23","updated_at":"2020-10-10 12:12:23"}

هدف پروژه


«فیلم‌ها‌» برای حل مشکل دو گروه از توسعه‌دهندگان به وجود آماده است. گروه اول کسانی هستند که به تازگی یادگیری یک زبان جدید مثل android یا ios را شروع کرده‌اند و برای تمرین نیاز به یک وب سرویس کامل و بدون پیچیدگی‌های رایج (مثل اجباری بودن api_key و … ) دارند. گروه دوم توسعه‌دهندگان حرفه‌ای می‌باشند که برای مقاله‌های آموزشی و یا آزمودن روش‌های مختلف نیاز به یک وب سرویس کامل دارند، البته این گروه توانایی رفع نیازشان را دارند اما با استفاده از «فیلم‌ها» می‌توانند در وقت خود صرفه‌جویی کنند.

در آینده‌‌ی نزدیک متدهای بیشتری به این وب سرویس اضافه می‌شود و حتی توسعه‌دهندگان می‌توانند از GraphQL برای دریافت اطلاعات از وب‌سرویس استفاده کنند. این پروژه متن‌باز هست و از همکاری همه‌ی توسعه‌دهنگان استقبال می‌شود.

نمونه پروژه ها


تماس با ما