Write API Integrations in Laravel and PHP Projects with Saloon
Saloon is a Laravel/PHP package that allows you to write your API integrations in a beautiful, standardized syntax. At the heart of this package is request objects, which define how to get specific requests from an API. For example, to get a Laravel Forge server, you might define a GetForgeServerRequest class:
 1use App\Http\Saloon\Requests\GetForgeServerRequest; 2  3$request = new GetForgeServerRequest(serverId: '123456'); 4  5$request->addHeader('Accept', 'application/json'); 6$request->addConfig('debug', true); 7  8// This will overwrite all default headers. 9$request->setHeaders($array);10// This will overwrite all default configration options.11$request->setConfig($array);12 13// Send the request and get the response body14$response = $request->send();15$data = $response->json();And here's what the request class might look like:
 1use App\Http\Saloon\Connectors\ForgeConnector; 2use Sammyjo20\Saloon\Constants\Saloon; 3use Sammyjo20\Saloon\Http\SaloonRequest; 4  5class GetForgeServerRequest extends SaloonRequest 6{ 7    protected ?string $method = Saloon::GET; 8    protected ?string $connector = ForgeConnector::class; 9 10    public function defineEndpoint(): string11    {12        return '/servers/' . $this->serverId;13    }14 15    public function __construct(16        public string $serverId17    ){}18}You can also define default headers for the request via a defaultHeaders() method defined on a request class, which is merged with the base connector headers.
This package gives you an object-oriented, fluent system to work with, providing conventions to organize classes better around interacting with external APIs. Saloon works with both Laravel and any PHP project (PHP 8+) via composer, providing the following features:
- Simple syntax, standardizes the way you interact with APIs
- You don't have to worry about Guzzle/Http Facade/cURL
- Organize all your API integrations in one place
- Easily add on your own functionality with plugins
- Powerful interceptor logic to customize the response
- Supports Guzzle Handlers for unlimited customization
- Mocking requests for testing (Coming Soon)
- Framework agnostic
You can learn more about this package, get full installation instructions, and view the source code on GitHub.
 
 
 
0 comments:
Post a Comment
Thanks