Search by

kodhe / http

karyakode

Kodhe HTTP - Request, Response, Middleware & Pipeline

Package info

github.com/kodhe/http

pkg:composer/kodhe/http

Statistics

Installs: 7

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

1.1.0 2026-09-28 21:40 UTC

This package is not auto-updated.

Last update: 2026-09-29 21:23:45 UTC


README

PHP Version License Version

Library HTTP komprehensif untuk framework Kodhe yang menyediakan Request, Response, Middleware, Pipeline, dan Routing system.

๐Ÿ“ฆ Instalasi

composer require kodhe/http

Requirements

  • PHP >= 8.1
  • Composer

๐Ÿš€ Fitur Utama

  • Request Handling - Pengelolaan HTTP request (GET, POST, cookies, files, environment)
  • Response Management - Pembuatan dan pengelolaan HTTP response dengan status codes dan headers
  • Middleware System - Sistem middleware yang fleksibel dengan support pipeline
  • Pipeline Architecture - Request processing pipeline dengan exception handling
  • Advanced Routing - Router modern dengan support untuk:
    • Named routes
    • Route groups
    • API versioning
    • Subdomain routing
    • Resource routes
    • Rate limiting
  • Controller System - Base controller dengan theme binding
  • Helper Functions - URL dan routing helpers

๐Ÿ“ Struktur Package

http/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ Controllers/
โ”‚   โ”‚   โ”œโ”€โ”€ BaseController.php
โ”‚   โ”‚   โ”œโ”€โ”€ Controller.php
โ”‚   โ”‚   โ””โ”€โ”€ RESTController.php
โ”‚   โ”œโ”€โ”€ Kernel/
โ”‚   โ”‚   โ”œโ”€โ”€ Kernel.php
โ”‚   โ”‚   โ””โ”€โ”€ Pipeline.php
โ”‚   โ”œโ”€โ”€ Middleware/
โ”‚   โ”‚   โ”œโ”€โ”€ Middleware.php
โ”‚   โ”‚   โ”œโ”€โ”€ MiddlewareGroup.php
โ”‚   โ”‚   โ”œโ”€โ”€ MiddlewareInterface.php
โ”‚   โ”‚   โ”œโ”€โ”€ MiddlewareRegistry.php
โ”‚   โ”‚   โ””โ”€โ”€ CallableMiddleware.php
โ”‚   โ”œโ”€โ”€ Requests/
โ”‚   โ”‚   โ”œโ”€โ”€ FormRequest.php
โ”‚   โ”‚   โ””โ”€โ”€ ValidatesRequests.php
โ”‚   โ”œโ”€โ”€ Routing/
โ”‚   โ”‚   โ”œโ”€โ”€ Router.php
โ”‚   โ”‚   โ”œโ”€โ”€ Route.php
โ”‚   โ”‚   โ”œโ”€โ”€ RouteCollection.php
โ”‚   โ”‚   โ”œโ”€โ”€ RouteItem.php
โ”‚   โ”‚   โ”œโ”€โ”€ RoutingManager.php
โ”‚   โ”‚   โ”œโ”€โ”€ UnifiedRouter.php
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ JsonResponse.php
โ”‚   โ”œโ”€โ”€ RedirectResponse.php
โ”‚   โ”œโ”€โ”€ Request.php
โ”‚   โ”œโ”€โ”€ Response.php
โ”‚   โ”œโ”€โ”€ ResponseFactory.php
โ”‚   โ”œโ”€โ”€ Uri.php
โ”‚   โ””โ”€โ”€ helpers/
โ”‚       โ”œโ”€โ”€ url.php
โ”‚       โ””โ”€โ”€ routing.php
โ”œโ”€โ”€ tests/
โ”‚   โ””โ”€โ”€ Unit/
โ”‚       โ”œโ”€โ”€ RequestTest.php
โ”‚       โ”œโ”€โ”€ ResponseTest.php
โ”‚       โ”œโ”€โ”€ UriTest.php
โ”‚       โ”œโ”€โ”€ Kernel/
โ”‚       โ”œโ”€โ”€ Middleware/
โ”‚       โ”œโ”€โ”€ Routing/
โ”‚       โ””โ”€โ”€ Helpers/
โ”œโ”€โ”€ composer.json
โ””โ”€โ”€ phpunit.xml

๐Ÿ’ก Penggunaan

Request

use Kodhe\Framework\Http\Request;

// Membuat request dari globals
$request = Request::fromGlobals();

// Mengakses data
$getId = $request->get('id');
$postData = $request->post('data');
$method = $request->getMethod();
$isAjax = $request->isAjax();

// JSON body
$jsonData = $request->json();

Response

use Kodhe\Framework\Http\Response;

$response = new Response();

// Set status dan body
$response->setStatus(200);
$response->setBody('Hello World');

// Set headers
$response->setHeader('Content-Type', 'application/json');

// JSON response
$response->asJson(['message' => 'Success']);

// Redirect
$response->redirect('/dashboard');

Middleware

use Kodhe\Framework\Http\Middleware\Middleware;
use Kodhe\Framework\Http\Request;
use Kodhe\Framework\Http\Response;

class AuthMiddleware extends Middleware
{
    public function handle(Request $request, callable $next)
    {
        // Check authentication
        if (!$this->isAuthenticated()) {
            return $this->response->setStatus(401)->setBody('Unauthorized');
        }
        
        return $next($request);
    }
    
    protected function isAuthenticated()
    {
        // Your auth logic here
        return true;
    }
}

Pipeline

use Kodhe\Framework\Http\Kernel\Pipeline;
use Kodhe\Framework\Http\Request;
use Kodhe\Framework\Http\Response;

$pipeline = new Pipeline($request, $response);

// Add middlewares
$pipeline->pipe(AuthMiddleware::class)
         ->pipe(CorsMiddleware::class)
         ->pipeMany([
             RateLimitMiddleware::class,
             SanitizeMiddleware::class
         ]);

// Set handler
$pipeline->setHandler(function($request, $response, $params) {
    // Your controller logic
    return $response->setBody('Processed');
});

// Execute pipeline
$result = $pipeline->execute();

Routing

use Kodhe\Framework\Http\Routing\Router;

$router = new Router();

// Basic route
$router->get('/', 'HomeController@index');

// Named route
$router->get('/users', 'UserController@index')->name('users.index');

// Route with parameters
$router->get('/users/{id}', 'UserController@show');

// Route group with middleware
$router->group(['middleware' => ['auth']], function($router) {
    $router->get('/dashboard', 'DashboardController@index');
    $router->get('/profile', 'ProfileController@show');
});

// API routes with versioning
$router->apiGroup(['version' => 'v1'], function($router) {
    $router->get('/users', 'Api\UserController@index');
    $router->post('/users', 'Api\UserController@store');
});

// Resource route
$router->resource('posts', 'PostController');

// Generate URL for named route
$url = route('users.index');
$urlWithParams = route('users.show', ['id' => 1]);

Helper Functions

URL Helpers

// Base URL
$baseUrl = base_url();

// Full URL
$fullUrl = site_url('path/to/page');

// Current URL
$currentUrl = current_url();

// Previous URL
$prevUrl = previous_url();

Routing Helpers

// Generate named route URL
$url = route('users.index');

// API route with version
$apiUrl = api_route('api.users', ['version' => 'v2']);

// Subdomain route
$subdomainUrl = subdomain_route('blog.post', 'blog', ['slug' => 'my-post']);

๐Ÿงช Testing

Jalankan unit tests menggunakan PHPUnit:

cd http
composer install
vendor/bin/phpunit

Atau dengan konfigurasi XML:

vendor/bin/phpunit --configuration phpunit.xml

๐Ÿ“‹ Class Overview

Core Classes

Class Description
Request HTTP request handler dengan support GET, POST, JSON, files
Response HTTP response builder dengan status codes dan headers
Uri URI parser dan builder
JsonResponse Specialized response untuk JSON
RedirectResponse Specialized response untuk redirects

Kernel

Class Description
Pipeline Request processing pipeline
Kernel Application kernel untuk bootstrap

Middleware

Class Description
Middleware Abstract base class untuk middleware
MiddlewareInterface Interface untuk middleware
MiddlewareGroup Grouping multiple middlewares
MiddlewareRegistry Registry untuk middleware management
CallableMiddleware Wrapper untuk closure-based middleware

Routing

Class Description
Router Main router dengan modern & legacy support
Route Individual route definition
RouteCollection Collection of routes
RouteItem Route item dengan metadata
RoutingManager Centralized routing management
UnifiedRouter Advanced router dengan unified interface
RateLimiter Rate limiting untuk routes

Controllers

Class Description
BaseController Base controller dengan theme binding
Controller Standard controller implementation
RESTController RESTful API controller base

๐Ÿ”ง Konfigurasi

Router dapat dikonfigurasi dengan berbagai options:

$router = new Router([
    'enable_modern_routing' => true,
    'enable_legacy_routing' => true,
    'prefer_modern' => true,
    'cache_routes' => true,
    'auto_detect_namespace' => true,
    'allow_namespace_in_routes' => true,
    'controller_suffix' => '',
    'default_404_controller' => 'FileNotFound',
    'default_404_namespace' => 'Kodhe\\Controllers\\Error\\'
]);

๐Ÿ“„ License

MIT License - lihat file LICENSE untuk detail lengkap.

๐Ÿค Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ž Support

Untuk pertanyaan dan issue, silakan buat issue di repository atau hubungi tim development.

Version: 1.1.0
Package: kodhe/http
Namespace: Kodhe\Framework\Http