داستان از این قرار می باشد که یک پروژه لاراول موجود است. این پروژه یک وبلاگ است، یعنی مدیران می توانند در آن پست قرار دهند و کاربران پست ها را مشاهده کنند و برای آن ها کامنت بگذارند.
حال قرار است شما یک امکان به آن اضافه کنید، این که کاربران بتوانند پست ها را لایک هم بکنند. پروژه به صورت کامل در اختیار شما قرار خواهد گرفت، تغییراتی در آن ایجاد کنید که بتوان در آن پست لایک کرد، و برای هر پست مشاهده کرد که چند لایک دارد. در هیچ مرحله ای لازم نیست با محیط گرافیکی پروژه درگیر شوید و یک خط کد HTML بزنید. همه فرايند از طریق URL و خروجی شما هم JSON خواهد بود.
در پروژه هر پست یک آدرس دارد که به صورت زیر میشود پست را با آن نمایش داد:/blog/post-address
برای لایک پروژه باید URL زیر را ایجاد کنید:/add_like/post-address
و برای مشاهده تعداد لایک های پروژه:/get_post_likes/post-address
کاربر برای لایک کردن و مشاهده تعداد لایک ها باید لاگین کرده باشد، پس اگر کاربر مهمان قصد انجام لایک یا مشاهده تعداد لایک ها را داشته باشد باید با خطا مواجه شود.
همانطور که پیش تر گفته شد، هر درخواست باید با یک خروجی JSON همراه باشد، که شامل فیلدهای زیر است:
فیلد result
یا برابر ok خواهد بود یا not_ok که اولی به معنای این است که عملیات بدون خطا انجام شد، و دومی به این معنا که خطایی وجود دارد. حالاتی که خطایی وجود ندارد و خروجی باید ok باشد در ادامه توضیحات داخل پرانتز گفته شده است.
در فیلد message
توضیحات بیشتری برای عملیات داده شود. این رشته باید برابر یکی از رشته های زیر باشد:
Liked
در صورتی که پست بدون مشکل لایک شد. (حالت بدون خطا) LikeExists
در صورتی که کاربر قبلا پست را لایک کرده است و لایک تکراری است. NotLoggedIn
در صورتی که کاربر وارد سایت نشده است. اگر کاربر در حال مشاهده تعداد لایک های یک پست است و مشکلی وجود ندارد، در فیلد count
تعداد لایک ها نمایش داده خواهد شد (حالت بدون خطا) ، در غیر این صورت این فیلد می تواند وجود نداشته باشد یا مقداری دلخواه داشته باشد.
فیلد redirect
نشان دهنده URL ای خواهد بود که کاربر به آن جا فرستاده خواهد شد و مقادیر آن به صورت زیر است.
redirect
باید از نام route ها استفاده کنید که می توانید آن ها را در پروژه بیابید. برای مثال نام route لاگین، login
است.http://bayanbox.ir/info/1317224463893997395/challenge
ابتدا پروژه را Extract کنید،
بعد از Extract کردن، دستورات زیر را در دایرکتوری پروژه اجرا کنید:
دستوراتی که با (!) مشخص شده اند، دیتابیس را حذف می کنند و دوباره می سازند. شاید در ابتدا نیازی به انجام این کار نباشد ولی برای تست کردن مکرر برنامه تان، احتمالا بخواهید این کار را انجام دهید. (می توانید هم migration ها را rollback کنید)
علامتهای (!) در دستورات نوشته شده بخشی از دستورات نیستند و نباید آن ها را وارد کنید! صرفا برای مشخص شدن در متن صورت سوال هستند.