Use Cases

This page collects small real-world scenarios that new users usually look for first.

Return JSON From An API Endpoint

use FastForward\Http\Message\Factory\ResponseFactoryInterface;

$responseFactory = $container->get(ResponseFactoryInterface::class);

return $responseFactory->createResponseFromPayload([
    'user' => [
        'id' => 1,
        'name' => 'Alice',
    ],
]);

Return An HTML Maintenance Page

return $responseFactory
    ->createResponseFromHtml('<h1>Maintenance</h1><p>Please try again later.</p>')
    ->withStatus(503);

Return Plain Text For A Health Check

return $responseFactory->createResponseFromText('ok');

Redirect After Authentication

return $responseFactory->createResponseRedirect('/dashboard');

Return 204 After A Delete Operation

return $responseFactory->createResponseNoContent([
    'X-Deleted-Resource' => 'account',
]);

Return 202 Accepted With A JSON Body

use FastForward\Http\Message\Factory\StreamFactoryInterface;

$streamFactory = $container->get(StreamFactoryInterface::class);

return $responseFactory
    ->createResponse(202)
    ->withHeader('Content-Type', 'application/json; charset=utf-8')
    ->withBody($streamFactory->createStreamFromPayload([
        'accepted' => true,
        'jobId' => 'sync-123',
    ]));

Create The Current Request From Globals

use Psr\Http\Message\ServerRequestInterface;

$request = $container->get(ServerRequestInterface::class);

$method = $request->getMethod();
$path = $request->getUri()->getPath();

Use The Helpers Without A Container

use FastForward\Http\Message\Factory\ResponseFactory;
use FastForward\Http\Message\Factory\StreamFactory;
use Nyholm\Psr7\Factory\Psr17Factory;

$psr17Factory = new Psr17Factory();
$responseFactory = new ResponseFactory($psr17Factory);
$streamFactory = new StreamFactory($psr17Factory);

$response = $responseFactory->createResponseFromPayload([
    'standalone' => true,
]);