# Http
The Http package provides tooling for building HTTP components.
💡 Http introduction
Read Chevere Http (opens new window) at Rodolfo's blog for a compressive introduction to this package.
# Installing
Http is available through Packagist (opens new window) and the repository source is at chevere/http (opens new window).
composer require chevere/http
# Controller
The Controller in Http is a special Controller meant to be used in the context of HTTP requests. It extends Action (opens new window) by adding request parameters (opens new window) (query string, body, files) and attributes for statuses and headers.
use Chevere\Http\Controller;
class UsersPostController extends Controller
{
// ...
}
# Accept Query
Define accepted parameters for query string using the acceptQuery
method.
use Chevere\Parameter\Interfaces\ArrayStringParameterInterface;
use function Chevere\Parameter\arrayp;
use function Chevere\Parameter\parameters;
use function Chevere\Parameter\string;
public static function acceptQuery(): ArrayStringParameterInterface
{
return arrayp(
foo: string('/^[a-z]+$/'),
);
}
# Accept Body
Define accepted parameters for body using the acceptBody
method.
use Chevere\Parameter\Interfaces\ArrayParameterInterface;
use function Chevere\Parameter\arrayp;
use function Chevere\Parameter\parameters;
use function Chevere\Parameter\string;
public static function acceptBody(): ArrayParameterInterface
{
return arrayp(
bar: string('/^[1-9]+$/'),
);
}
# Accept Files
Define accepted parameters for FILES using the acceptFiles
method.
use Chevere\Parameter\Interfaces\ArrayParameterInterface;
use function Chevere\Parameter\arrayp;
use function Chevere\Parameter\file;
public static function acceptFiles(): ArrayParameterInterface
{
return arrayp(
myFile: file(),
);
}
# With Query
Set query parameters using the withQuery
method. It will only accept arguments complying with Accept Query.
$controller = $controller
->withQuery($_GET);
# With Body
Set body parameters using the withBody
method. It will only accept arguments complying with Accept Body.
$controller = $controller
->withBody($_POST);
# With Files
Set files parameters using the withFiles
method. It will only accept arguments complying with Accept Files.
$controller = $controller
->withFiles($_FILES);
# Query
Use method query
to read query parameters.
$query = $controller->query();
# Body
Use method body
to read the body parameters.
$post = $controller->body();
# Files
Use method files
to read the files parameters.
$files = $controller->files();
# Middleware
Define PSR Middleware (opens new window) collections using middlewares
function.
use function Chevere\Http\middlewares;
$middlewares = middlewares(
MiddlewareOne::class,
MiddlewareTwo::class
);
Middleware priority goes from top to bottom, first in first out (FIFO).
# Attributes
Use attributes (opens new window) to add context for Controller and Middleware.
# Request
Request metadata can be defined using the Request
attribute. It supports to define multiple Header arguments.
use Chevere\Http\Attributes\Request;
use Chevere\Http\Header;
use Chevere\Http\Controller;
#[Request(
new Header('Accept', 'application/json'),
new Header('Connection', 'keep-alive')
)]
class ResourceGetController extends Controller
Use function getRequest
to read the Request
attribute.
use function Chevere\Http\getRequest;
getRequest(ResourceGetController::class);
# Response
Response metadata can be defined using the Response
attribute. It supports to define Status and multiple Header arguments.
use Chevere\Http\Attributes\Response;
use Chevere\Http\Header;
use Chevere\Http\Controller;
#[Response(
new Status(200),
new Header('Content-Disposition', 'attachment'),
new Header('Content-Type', 'application/json')
)]
class ResourceGetController extends Controller
Use function getResponse
to read the Response
attribute.
use function Chevere\Http\getResponse;
getResponse(ResourceGetController::class);
# HTTP Methods
# ConnectMethod
CONNECT
Establish a tunnel to the server identified by the target resource.
use Chevere\Http\Methods\ConnectMethod;
$connect = new ConnectMethod();
# DeleteMethod
DELETE
Remove all current representations of the target resource.
use Chevere\Http\Methods\DeleteMethod;
$delete = new DeleteMethod();
# GetMethod
GET
Transfer a current representation of the target resource.
use Chevere\Http\Methods\GetMethod;
$get = new GetMethod();
# HeadMethod
HEAD
Same as GET, but only transfer the status line and header section.
use Chevere\Http\Methods\HeadMethod;
$head = new HeadMethod();
# OptionsMethod
OPTIONS
Describe the communication options for the target resource.
use Chevere\Http\Methods\OptionsMethod;
$options = new OptionsMethod();
# PatchMethod
PATCH
Apply partial modifications described in the request entity to the target resource.
use Chevere\Http\Methods\PatchMethod;
$path = new PatchMethod();
# PostMethod
POST
Perform resource-specific processing on the request payload.
use Chevere\Http\Methods\PostMethod;
$post = new PostMethod();
# PutMethod
PUT
Replace all current representations of the target resource with the request payload.
use Chevere\Http\Methods\PutMethod;
$put = new PutMethod();
# TraceMethod
TRACE
Perform a message loop-back test along the path to the target resource.
use Chevere\Http\Methods\TraceMethod;
$trace = new TraceMethod();