This website collects cookies to deliver better user experience
<?php namespace App\Http\Apis; use Illuminate\Http\Client\PendingRequest; use Illuminate\Support\Traits\ForwardsCalls; abstract class Api { use ForwardsCalls; protected PendingRequest $http; public function __construct() { $this->http = $this->initialize(); } public function __call($method, $params) { return $this->forwardCallTo($this->http, $method, $params); } public abstract function initialize(): PendingRequest; }
<?php namespace App\Http\Apis; use Illuminate\Http\Client\PendingRequest; use Illuminate\Support\Facades\Http; class LaratipsApi extends Api { public function initialize(): PendingRequest { return Http::acceptJson()->baseUrl('http://laratips.test/api'); } }
<?php namespace App\Http\Controllers; use App\Http\Apis\LaratipsApi; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; class DashboardController extends Controller { public function index(Request $request) { return (new LaratipsApi)->get('users'); } }
<?php namespace App\Http\Apis; use Illuminate\Http\Client\PendingRequest; use Illuminate\Support\Facades\Http; class FakeStoreApi extends Api { public function initialize(): PendingRequest { return Http::acceptJson()->baseUrl('https://fakestoreapi.com'); } }
<?php namespace App\Http\Controllers; use App\Http\Apis\FakeStoreApi; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; class DashboardController extends Controller { public function index(Request $request) { return (new FakeStoreApi)->get('products', [ 'limit' => 2 ]); } }
30
0