PHPackages                             lukman-ss/http - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. lukman-ss/http

ActiveLibrary[HTTP &amp; Networking](/categories/http)

lukman-ss/http
==============

A clean, modern, and dependency-free PHP 8.2+ HTTP abstraction package for Request, Response, HeaderBag, MiddlewarePipeline, and more.

v1.0.0(yesterday)14↑2900%1MITPHPPHP &gt;=8.2

Since Jun 13Pushed yesterdayCompare

[ Source](https://github.com/lukman-ss/http)[ Packagist](https://packagist.org/packages/lukman-ss/http)[ RSS](/packages/lukman-ss-http/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (1)Versions (2)Used By (1)

lukman-ss/http
==============

[](#lukman-sshttp)

 [![lukman-ss/http Hero Image](docs/hero.png)](docs/hero.png)

A clean, modern, and dependency-free PHP 8.2+ HTTP abstraction package.

Requirements
------------

[](#requirements)

- PHP 8.2 or higher
- No runtime dependencies

Installation
------------

[](#installation)

```
composer require lukman-ss/http
```

Request
-------

[](#request)

```
use Lukman\Http\Request;

$request = new Request(
    method: 'POST',
    uri: '/api/users?page=2',
    query: ['page' => '2'],
    request: ['name' => 'Lukman', 'email' => 'lukman@example.com'],
    headers: ['Content-Type' => 'application/json'],
    body: '{"name":"Lukman"}',
);

$request->method();         // 'POST'
$request->uri();            // '/api/users?page=2'
$request->path();           // '/api/users'
$request->isMethod('post'); // true

$request->query('page');    // '2'
$request->query();          // ['page' => '2']
$request->input('name');    // 'Lukman'
$request->input();          // ['name' => 'Lukman', 'email' => 'lukman@example.com']

$request->json('name');     // 'Lukman'
$request->json();           // ['name' => 'Lukman']

$request->all();             // ['name' => 'Lukman', 'email' => 'lukman@example.com']
$request->only(['name']);    // ['name' => 'Lukman']
$request->except(['email']); // ['name' => 'Lukman']

$request->header('Content-Type');   // 'application/json'
$request->header('content-type');   // 'application/json'
$request->headers()->has('accept'); // false
```

Capture from PHP globals:

```
$request = Request::capture();
```

Uploaded files:

```
$file = $request->file('avatar'); // UploadedFile|null

$file?->isValid();
$file?->extension();
$file?->moveTo('/var/uploads/avatar.jpg');
```

Response
--------

[](#response)

```
use Lukman\Http\Response;

$response = new Response('Hello, world!', 200, ['X-App' => 'lukman-http']);

$response->content(); // 'Hello, world!'
$response->status();  // 200

$response
    ->withStatus(201)
    ->setContent('Created')
    ->header('Location', '/api/users/1');

$response->send();
```

JsonResponse
------------

[](#jsonresponse)

```
use Lukman\Http\JsonResponse;
use Lukman\Http\Response;

$response = new JsonResponse(['id' => 1, 'name' => 'Lukman'], 201);

$response->content();                      // '{"id":1,"name":"Lukman"}'
$response->headers()->get('content-type'); // 'application/json'

$response = Response::json(['error' => 'not found'], 404);
```

RedirectResponse
----------------

[](#redirectresponse)

```
use Lukman\Http\RedirectResponse;
use Lukman\Http\Response;

$response = new RedirectResponse('/dashboard');

$response->headers()->get('location'); // '/dashboard'
$response->status();                   // 302

$response = new RedirectResponse('/new-url', 301);
$response = Response::redirect('/login', 302);
```

MiddlewarePipeline
------------------

[](#middlewarepipeline)

```
use Lukman\Http\MiddlewareInterface;
use Lukman\Http\MiddlewarePipeline;
use Lukman\Http\Request;
use Lukman\Http\RequestHandlerInterface;
use Lukman\Http\Response;

class AuthMiddleware implements MiddlewareInterface
{
    public function process(Request $request, RequestHandlerInterface $handler): Response
    {
        if ($request->header('Authorization') !== 'Bearer secret') {
            return new Response('Unauthorized', 401);
        }

        return $handler->handle($request);
    }
}

class FinalHandler implements RequestHandlerInterface
{
    public function handle(Request $request): Response
    {
        return new Response('OK', 200);
    }
}

$pipeline = new MiddlewarePipeline([new AuthMiddleware()], new FinalHandler());
$response = $pipeline->handle(Request::capture());
```

Project Structure
-----------------

[](#project-structure)

```
src/
  HeaderBag.php
  JsonResponse.php
  MiddlewareInterface.php
  MiddlewarePipeline.php
  RedirectResponse.php
  Request.php
  RequestHandlerInterface.php
  Response.php
  UploadedFile.php
tests/
  AutoloadTest.php
  HeaderBagTest.php
  JsonResponseTest.php
  MiddlewarePipelineTest.php
  RedirectResponseTest.php
  RequestTest.php
  ResponseTest.php
  UploadedFileTest.php

```

Running Tests
-------------

[](#running-tests)

```
composer test
```

Or directly:

```
vendor/bin/phpunit
```

License
-------

[](#license)

MIT. See [LICENSE](LICENSE).

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance100

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community5

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/64991223?v=4)[Lukman](/maintainers/lukman-ss)[@lukman-ss](https://github.com/lukman-ss)

---

Tags

httpresponserequestpsrphpmiddleware

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/lukman-ss-http/health.svg)

```
[![Health](https://phpackages.com/badges/lukman-ss-http/health.svg)](https://phpackages.com/packages/lukman-ss-http)
```

###  Alternatives

[psr/http-server-middleware

Common interface for HTTP server-side middleware

18399.3M1.8k](/packages/psr-http-server-middleware)[fig/http-message-util

Utility classes and constants for use with PSR-7 (psr/http-message)

39894.6M295](/packages/fig-http-message-util)[idealo/php-middleware-stack

Implementation of HTTP Middleware PSR-15 specification

3210.3k](/packages/idealo-php-middleware-stack)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
