تذکر: این یک پست آموزشی برای عموم نیست! بلکه تنها جایی برای یادداشتهای من حین یادگیریه تا بهتر به خاطر بسپارم و در صورت لزوم به اونها مراجعه کنم.
قسمت ۱۴۱ تا ۱۴۳
این ویژگی در لاراول ۷ اضافه شده و به ما کمک میکنه تا به راحتی یک درخواست به سمت یک API ارسال کنیم و جوابش رو دریافت کنیم.
برای کار با HTTP Client ما نیاز به کتابخانهٔ Guzzle داریم؛ Guzzle یک کتابخانهٔ PHP هست برای کار با درخواستها که لاراول هم از این کتابخونه استفاده میکنه. توی ورژن ۷ لاراول این کتابخانه به صورت پیش فرض وجود داره و نیازی به نصب نیست؛ اما اگر ورژن قدیمیتر باشه باید حتما با composer نصب بشه.
توی این بخش از jsonplaceholder استفاده میکنیم که Fake API به ما میده.
برای این کار باید Http facade رو به پروژه اضافه کنیم:
خروجی که به ما میده:
به راحتی میتونیم روی response متدهای مورد نیاز رو هم ران کنیمگ مثلا:
dd($response->body());
که خروجی زیر رو میگیریم:
یا به جای body که string برمیگردونه، میتونیم از json استفاده کنیم که array برمیگردونه. حتی میتونیم روی خود $response بدون اینکه روش متد json بزنیم؛ دیتا رو دریافت کنیم:
(البته این API چیزی به اسم data نداره و فقط برای مثال بود).
یا مثلا از متد status استفاده کنیم تا ببینیم وضعیت response چطور بوده؛ یه متد جالبی هم داریم به اسم ok که میاد و به ازاری هر response که status کدش توی رنج ۲۰۰ تا ۳۰۰ بوده true برمیگردونه.
برای رنج ۴۰۰ تا ۵۰۰ هم clientError رو داریم؛ مثلا اگر درخواست دسترسی بدیم به بخشی که اصلا وجود نداره و ۴۰۴ رو برای ما برمیگردونه.
متد serverError هم برای هندل کردن خطاهای سمت سرور ۵۰۰ و... هست.
متد throw برای هندل کردن exception هست.
متدی هم داریم برای تعیین timeout، یعنی تعیین کنیم که اگر یک API بیش از اندازه طول کشید تا ران بشه، timeout بده و مثلا یک خطا رو throw کنیم:
یک پست ستونهای UserID id title body رو داره:
حالا اگر بخوایم یک پست جدید ایجاد کنیم؛ باید این پارامترها رو بهش پاس بدیم:
به راحتی میتونیم برای دیدن نتیجه خروجی json رو روی response ببینیم:
dd($response->json());
خروجی متد json روی response اینه:
اگر بخوایم که دادههای پست رو به شکل form ارسال کنیم؛ باید از متد asForm استفاده کنیم:
همچنین متد attach رو داریم که از اون برای پیوست فایل استفاده میکنیم که پارامترهای ورودی اون رو در پایین داریم میبینیم:
پارامتر اول: اسم فیلد
پارامتر دوم: مسیر فایلی که قراره آپلود بشه
پارامتر سوم: اسم فایلی که قراره ذخیره بشه
متد اول withBasicAuth هست که یک auth معمولی و با user و pass هست:
اگر auth بر اساس توکن باشه:
ارسال دیتا در header:
متد retry که برای ارسال مجدد درخواست هست:
پارامتر اول (۳) تعداد دفعاتی هست که تلاش می کنیم؛ پارامتر دوم، بر اساس میلیثانیه به فاصلهٔ فلان.