Laravel Packages

Write API Integrations in Laravel and PHP Projects with Saloon

Published
Write API Integrations in Laravel and PHP Projects with Saloon image

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:

use App\Http\Saloon\Requests\GetForgeServerRequest;
 
$request = new GetForgeServerRequest(serverId: '123456');
 
$request->addHeader('Accept', 'application/json');
$request->addConfig('debug', true);
 
// This will overwrite all default headers.
$request->setHeaders($array);
// This will overwrite all default configration options.
$request->setConfig($array);
 
// Send the request and get the response body
$response = $request->send();
$data = $response->json();

And here's what the request class might look like:

use App\Http\Saloon\Connectors\ForgeConnector;
use Sammyjo20\Saloon\Constants\Saloon;
use Sammyjo20\Saloon\Http\SaloonRequest;
 
class GetForgeServerRequest extends SaloonRequest
{
protected ?string $method = Saloon::GET;
protected ?string $connector = ForgeConnector::class;
 
public function defineEndpoint(): string
{
return '/servers/' . $this->serverId;
}
 
public function __construct(
public string $serverId
){}
}

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.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
Volker Dusch on the PHP RCE Vulnerabilities and Disclosure image

Volker Dusch on the PHP RCE Vulnerabilities and Disclosure

Read article
Decide with Jev: Turn AI Answers into Decisions with PHP Rules image

Decide with Jev: Turn AI Answers into Decisions with PHP Rules

Read article
Skuul: Open-Source School Management Built on Laravel image

Skuul: Open-Source School Management Built on Laravel

Read article
Laravel Read Replicas: Prevent Stale Reads After a Write image

Laravel Read Replicas: Prevent Stale Reads After a Write

Read article
Screenshot: Capture Images and PDFs with PHP and Laravel image

Screenshot: Capture Images and PDFs with PHP and Laravel

Read article
Reset Sticky Database Connections Between Laravel Queue Jobs image

Reset Sticky Database Connections Between Laravel Queue Jobs

Read article