Looking to hire Laravel developers? Try LaraJobs

laravel-psr-http maintained by wimski

Description
PSR HTTP setup for Laravel
Author
Wim Reckman
Last update
2025/02/26 09:56 (dev-master)
License
Downloads
32 209
Tags

Comments
comments powered by Disqus

Latest Stable Version Coverage Status PHPUnit PHPStan

Laravel PSR HTTP

This package provides Laravel bindings to make PSR HTTP requests using discovery.

Install

composer require wimski/laravel-psr-http

Usage example

<?php

declare(strict_types=1);

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Psr\Http\Client\ClientExceptionInterface;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;

class TestCommand extends Command
{
    protected $signature = 'http:test';
    protected $description = 'Test the HTTP client';

    public function __construct(
        protected ClientInterface $httpClient,
        protected RequestFactoryInterface $requestFactory,
        protected StreamFactoryInterface $streamFactory,
    ) {
        parent::__construct();
    }

    public function handle(): void
    {
        $stream = $this->streamFactory->createStream(json_encode([
            'title'  => 'foo',
            'body'   => 'bar',
            'userId' => 1,
        ]));

        $request = $this->requestFactory->createRequest('POST', 'https://jsonplaceholder.typicode.com/posts')
            ->withHeader('Content-type', 'application/json; charset=UTF-8')
            ->withBody($stream);

        try {
            $response = $this->httpClient->sendRequest($request);
            dump(json_decode((string) $response->getBody(), true));
        } catch (ClientExceptionInterface $exception) {
            dump($exception->getMessage());
        }
    }
}