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