سلااام
امروز آموزشمون درباره 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 هست .
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 مقادیر. به شکل زیر بگیرید .
[{"id": 1,"name": "Leanne Graham","username": "Bret","email": "Sincere@april.biz","address": {"street": "Kulas Light","suite": "Apt. 556","city": "Gwenborough","zipcode": "92998-3874","geo": {"lat": "-37.3159","lng": "81.1496"}},"phone": "1-770-736-8031 x56442","website": "hildegard.org","company": {"name": "Romaguera-Crona","catchPhrase": "Multi-layered client-server neural-net","bs": "harness real-time e-markets"}},{"id": 2,"name": "Ervin Howell","username": "Antonette","email": "Shanna@melissa.tv","address": {"street": "Victor Plains","suite": "Suite 879","city": "Wisokyburgh","zipcode": "90566-7771","geo": {"lat": "-43.9509","lng": "-34.4618"}},"phone": "010-692-6593 x09125","website": "anastasia.net","company": {"name": "Deckow-Crist","catchPhrase": "Proactive didactic contingency","bs": "synergize scalable supply-chains"}},{"id": 3,"name": "Clementine Bauch","username": "Samantha","email": "Nathan@yesenia.net","address": {"street": "Douglas Extension","suite": "Suite 847","city": "McKenziehaven","zipcode": "59590-4157","geo": {"lat": "-68.6102","lng": "-47.0653"}},"phone": "1-463-123-4447","website": "ramiro.info","company": {"name": "Romaguera-Jacobson","catchPhrase": "Face to face bifurcated interface","bs": "e-enable strategic applications"}}]
و شما میتونید همینجا درخواست هاتونو غربال(محدود) کنید که اینا دیگه برمیگرده به RESTFUL API ها که باید دربارش بدونید ، حالا شما میخواید name بزارید ،email رو بزارید، username رو بزارید ، adress یا company رو بزارید که البته اینجا شما میتونید یه ربعد دیگه هم پیش برید مثلا تو adress میتونید فقط street یا city رو دریافت کنید .
خروجی مثال بالا به این شکل میشه .
$response = Http::get('http://example.com/users/1')['name']; // response [ "Leanne Graham","Ervin Howell" ,"Clementine Bauch"]
و شما میتونید همینجا درخواست هاتونو غربال(محدود) کنید که اینا دیگه برمیگرده به RESTFUL API ها که باید دربارش بدونید ، حالا شما میخواید name بزارید ،email رو بزارید، username رو بزارید ، adress یا company رو بزارید کهالبته اینجا شما میتونید یه ربعد دیگه هم پیش برید مثلا تو adress میتونید فقط street یا city رو دریافت کنید .
خروجی مثال بالا به این شکل میشه .
$response = Http::get('http://example.com/users/1')['adress']; // response... [ ["street"=> "Douglas Extension","suite"=> "Suite 847","city"=> "McKenziehaven","zipcode"=> "59590-4157","geo"=> ["lat"=> "-68.6102","lng"=> "-47.0653"]] ,["street"=> "Douglas Extension","suite"=> "Suite 847","city"=> "McKenziehaven","zipcode"=> "59590-4157","geo"=> ["lat"=> "-68.6102","lng"=> "-47.0653"]] ,["street"=> "Douglas Extension","suite"=> "Suite 847","city"=> "McKenziehaven","zipcode"=> "59590-4157","geo"=> ["lat"=> "-68.6102","lng"=> "-47.0653"]]] // # مثال دو : بعد های داخلی $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 دو قسمته یکی url و دیگری body که ما باید به صورت آرایه(json) بفرستیمش .
$response = Http::post('http://example.com/users', [ 'name' => 'Steve', 'role' => 'Network Administrator', ]);
ده .
ن.ت : در صنعت تکنلوژی هر روزه شاهد ابداع راه و روش های راه های جدید هستیم ، در این پست library یا افزونه HttpClient یاد گرفیتم . اما مبحثمون بیشتر از این حرفاست .
و آموزش گسترده تری در یوتیوبمون گذاشته شده .