مهدی
مهدی
خواندن ۳ دقیقه·۱۰ ماه پیش

Http Client در لاراول

سلااام
امروز آموزشمون درباره Http Client یا همون عمل Ajax در فریمورک لاراول هست.
خب دوستان لاراول از نسخه های 5 به اینور سرویس http client رو روش بیشتر وقت گذاشت .
و فقط یه چمله اضافه کنم http Client تو لاراول مثل fetch تو جاوا اسکریپت میمونه اینو فقط برای سئ**و گفتم ? .



خب آموزشو شروع کنیم ....
عرضم به حضورتون متد های کلاس Http از فَساد و ساپورت ایمپورت میشن .

use Illuminate\Support\Facades\Http;

فقط اینکه به صورت پیش فرض رو پکیجتون هست .
ولی اگه نبود میتونید از کامپوزر استفاده کنید و نصبش کنید .اگه لاراول نصب کردید که وارد فولدر project شید و کد زیر رو برای نصب، بزنید وگرنه برای نصب لاراول با خط پایینیشو بزنیم . ( اشتباه شد خط بالا برای نصب لاراول ، خط پایین برای نصب پکیج برای اطمینان )

#laravel installer composer global require laravel/installer laravel new project # pakage install composer require guzzlehttp/guzzle

خب اولین چیزی باهاش کار میکنیم دستور get هست .

درخواست های get در Http Client :

use Illuminate\Support\Facades\Http; $response = Http::get('http://example.com');

حالا هر خروجی که میتونیم از response$ بگیریم رو تو کد باکس پایین براتون گذاشتم .

$response->body() : string; $response->json($key = null) : array|mixed; $response->object() : object; $response->collect($key = null) : Illuminate\Support\Collection; $response->status() : int; $response->ok() : bool; $response->successful() : bool; $response->redirect(): bool; $response->failed() : bool; $response->serverError() : bool; $response->clientError() : bool; $response->header($header) : string; $response->headers() : array;

اگه با JsonPlaceholder کار کرده باشید میدونید شما میتونید فقط یه سری فیلد هارو دریافت کنید برای مثال از آدرس jsonplaceholder مقادیر. به شکل زیر بگیرید .

[{&quotid&quot: 1,&quotname&quot: &quotLeanne Graham&quot,&quotusername&quot: &quotBret&quot,&quotemail&quot: &quotSincere@april.biz&quot,&quotaddress&quot: {&quotstreet&quot: &quotKulas Light&quot,&quotsuite&quot: &quotApt. 556&quot,&quotcity&quot: &quotGwenborough&quot,&quotzipcode&quot: &quot92998-3874&quot,&quotgeo&quot: {&quotlat&quot: &quot-37.3159&quot,&quotlng&quot: &quot81.1496&quot}},&quotphone&quot: &quot1-770-736-8031 x56442&quot,&quotwebsite&quot: &quothildegard.org&quot,&quotcompany&quot: {&quotname&quot: &quotRomaguera-Crona&quot,&quotcatchPhrase&quot: &quotMulti-layered client-server neural-net&quot,&quotbs&quot: &quotharness real-time e-markets&quot}},{&quotid&quot: 2,&quotname&quot: &quotErvin Howell&quot,&quotusername&quot: &quotAntonette&quot,&quotemail&quot: &quotShanna@melissa.tv&quot,&quotaddress&quot: {&quotstreet&quot: &quotVictor Plains&quot,&quotsuite&quot: &quotSuite 879&quot,&quotcity&quot: &quotWisokyburgh&quot,&quotzipcode&quot: &quot90566-7771&quot,&quotgeo&quot: {&quotlat&quot: &quot-43.9509&quot,&quotlng&quot: &quot-34.4618&quot}},&quotphone&quot: &quot010-692-6593 x09125&quot,&quotwebsite&quot: &quotanastasia.net&quot,&quotcompany&quot: {&quotname&quot: &quotDeckow-Crist&quot,&quotcatchPhrase&quot: &quotProactive didactic contingency&quot,&quotbs&quot: &quotsynergize scalable supply-chains&quot}},{&quotid&quot: 3,&quotname&quot: &quotClementine Bauch&quot,&quotusername&quot: &quotSamantha&quot,&quotemail&quot: &quotNathan@yesenia.net&quot,&quotaddress&quot: {&quotstreet&quot: &quotDouglas Extension&quot,&quotsuite&quot: &quotSuite 847&quot,&quotcity&quot: &quotMcKenziehaven&quot,&quotzipcode&quot: &quot59590-4157&quot,&quotgeo&quot: {&quotlat&quot: &quot-68.6102&quot,&quotlng&quot: &quot-47.0653&quot}},&quotphone&quot: &quot1-463-123-4447&quot,&quotwebsite&quot: &quotramiro.info&quot,&quotcompany&quot: {&quotname&quot: &quotRomaguera-Jacobson&quot,&quotcatchPhrase&quot: &quotFace to face bifurcated interface&quot,&quotbs&quot: &quote-enable strategic applications&quot}}]

و شما میتونید همینجا درخواست هاتونو غربال(محدود) کنید که اینا دیگه برمیگرده به RESTFUL API ها که باید دربارش بدونید ، حالا شما میخواید name بزارید ،email رو بزارید، username رو بزارید ، adress یا company رو بزارید که البته اینجا شما میتونید یه ربعد دیگه هم پیش برید مثلا تو adress میتونید فقط street یا city رو دریافت کنید .
خروجی مثال بالا به این شکل میشه .

$response = Http::get('http://example.com/users/1')['name']; // response [ &quotLeanne Graham&quot,&quotErvin Howell&quot ,&quotClementine Bauch&quot]

و شما میتونید همینجا درخواست هاتونو غربال(محدود) کنید که اینا دیگه برمیگرده به RESTFUL API ها که باید دربارش بدونید ، حالا شما میخواید name بزارید ،email رو بزارید، username رو بزارید ، adress یا company رو بزارید کهالبته اینجا شما میتونید یه ربعد دیگه هم پیش برید مثلا تو adress میتونید فقط street یا city رو دریافت کنید .
خروجی مثال بالا به این شکل میشه .

$response = Http::get('http://example.com/users/1')['adress']; // response... [ [&quotstreet&quot=> &quotDouglas Extension&quot,&quotsuite&quot=> &quotSuite 847&quot,&quotcity&quot=> &quotMcKenziehaven&quot,&quotzipcode&quot=> &quot59590-4157&quot,&quotgeo&quot=> [&quotlat&quot=> &quot-68.6102&quot,&quotlng&quot=> &quot-47.0653&quot]] ,[&quotstreet&quot=> &quotDouglas Extension&quot,&quotsuite&quot=> &quotSuite 847&quot,&quotcity&quot=> &quotMcKenziehaven&quot,&quotzipcode&quot=> &quot59590-4157&quot,&quotgeo&quot=> [&quotlat&quot=> &quot-68.6102&quot,&quotlng&quot=> &quot-47.0653&quot]] ,[&quotstreet&quot=> &quotDouglas Extension&quot,&quotsuite&quot=> &quotSuite 847&quot,&quotcity&quot=> &quotMcKenziehaven&quot,&quotzipcode&quot=> &quot59590-4157&quot,&quotgeo&quot=> [&quotlat&quot=> &quot-68.6102&quot,&quotlng&quot=> &quot-47.0653&quot]]] // # مثال دو : بعد های داخلی $response = Http::get('http://example.com/users/1')['adress']['street']; // response... ['Douglas Extension 1','Douglas Extension 2 ',' Douglas Extension 3 ']

و اما...

تو درخواست های get اگر بخوایم Query Parametr ارسال کنیم متد یه قسمت دومی ( پارامتر ) هم داره که باید به صورت آرایه (json) بفرستید .

$response = Http::get('http://example.com/users', [ 'name' => 'Taylor',' page' => 1, ]);

درخواست های post در Http Client :

تو درخواست های پست داریم یحتمل ی سری دیتا رو میفرستیم که خب، باید در نظر گرفت متد post دو قسمته یکی url و دیگری body که ما باید به صورت آرایه(json) بفرستیمش .

$response = Http::post('http://example.com/users', [ 'name' => 'Steve', 'role' => 'Network Administrator', ]);


ده .



ن.ت : در صنعت تکنلوژی هر روزه شاهد ابداع راه و روش های راه های جدید هستیم ، در این پست library یا افزونه HttpClient یاد گرفیتم . اما مبحثمون بیشتر از این حرفاست .
و آموزش گسترده تری در یوتیوبمون گذاشته شده .

من مهدی هستم میتونی MrMDCode صدام کنی ?


سخت کار نکنید ، هوشمندانه کاره کنید . ( البته خودم خیلی به این موضوع اهمیت نمیدم ?? )
شاید از این پست‌ها خوشتان بیاید