
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 AppHttpSaloonRequestsGetForgeServerRequest;
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 body
14$response = $request->send();
15$data = $response->json();
And here’s what the request class might look like:
1use AppHttpSaloonConnectorsForgeConnector;
2use Sammyjo20SaloonConstantsSaloon;
3use Sammyjo20SaloonHttpSaloonRequest;
4
5class GetForgeServerRequest extends SaloonRequest
6{
7 protected ?string $method = Saloon::GET;
8 protected ?string $connector = ForgeConnector::class;
9
10 public function defineEndpoint(): string
11 {
12 return '/servers/' . $this->serverId;
13 }
14
15 public function __construct(
16 public string $serverId
17 ){}
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.
Credit: Source link