PHP code example of utopia-php / http

1. Go to this page and download the library: Download utopia-php/http library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

utopia-php / http example snippets




use Utopia\DI\Container;
use Utopia\Http\Http;
use Utopia\Http\Request;
use Utopia\Http\Response;
use Utopia\Http\Adapter\FPM\Server;

$resources = new Container();

Http::get('/hello-world') // Define Route
    ->inject('request')
    ->inject('response')
    ->action(
        function(Request $request, Response $response) {
            $response
              ->addHeader('Cache-Control', 'no-cache, no-store, must-revalidate')
              ->addHeader('Expires', '0')
              ->addHeader('Pragma', 'no-cache')
              ->json(['Hello' => 'World']);
        }
    );

Http::setMode(Http::MODE_TYPE_PRODUCTION);

$http = new Http(new Server($resources), 'America/New_York');
$http->start();

use Utopia\DI\Container;
use Utopia\Http\Http;
use Utopia\Http\Response;
use Utopia\Http\Adapter\FPM\Server;

$resources = new Container();

Http::get('/')
    ->inject('response')
    ->action(
        function(Response $response) {
            $response->send('Hello from PHP FPM');
        }
    );

$http = new Http(new Server($resources), 'America/New_York');
$http->start();

use Utopia\DI\Container;
use Utopia\Http\Http;
use Utopia\Http\Request;
use Utopia\Http\Response;
use Utopia\Http\Adapter\Swoole\Server;

$resources = new Container();

Http::get('/')
    ->inject('request')
    ->inject('response')
    ->action(
        function(Request $request, Response $response) {
            $response->send('Hello from Swoole');
        }
    );

$http = new Http(new Server('0.0.0.0', '80', resources: $resources), 'America/New_York');
$http->start();

Http::get('/')
    ->param('name', 'World', new Text(256), 'Name to greet. Optional, max length 256.', true)
    ->inject('response')
    ->action(function(string $name, Response $response) {
        $response->send('Hello ' . $name);
    });

Http::get('/users/:id')
    ->alias('/members/:id')
    ->param('id', '', new Text(256), 'User ID')
    ->inject('response')
    ->action(function(string $id, Response $response) {
        $response->json(['id' => $id]);
    });

Http::routes([Http::REQUEST_METHOD_GET, Http::REQUEST_METHOD_POST], '/oauth/userinfo')
    ->inject('request')
    ->inject('response')
    ->action(function(Request $request, Response $response) {
        // $request->getMethod() tells how the request arrived (GET or POST)
        $response->json(['sub' => 'user-id']);
    });

Http::init()
    ->inject('request')
    ->action(function(Request $request) {
        \var_dump("Recieved: " . $request->getMethod() . ' ' . $request->getURI());
    });

Http::shutdown()
    ->inject('response')
    ->action(function(Response $response) {
        \var_dump('Responding with status code: ' . $response->getStatusCode());
    });

Http::error()
    ->inject('error')
    ->inject('response')
    ->action(function(\Throwable $error, Response $response) {
        $response
            ->setStatusCode(500)
            ->send('Error occurred ' . $error);
    });

Http::get('/v1/health')
    ->groups(['api', 'public'])
    ->inject('response')
    ->action(
        function(Response $response) {
            $response->send('OK');
        }
    );

Http::init()
    ->groups(['api'])
    ->inject('request')
    ->inject('response')
    ->action(function(Request $request, Response $response) {
        $apiKey = $request->getHeader('x-api-key', '');

        if(empty($apiKey)) {
            $response
                ->setStatusCode(Response::STATUS_CODE_UNAUTHORIZED)
                ->send('API key missing.');
        }
    });

$resources->set('bootTime', function () {
    return \microtime(true);
});

$http = new Http(new Server($resources), 'America/New_York');

Http::get('/')
    ->inject('bootTime')
    ->inject('response')
    ->action(function(float $bootTime, Response $response) {
        $response->send('Process started at: ' . \strval($bootTime));
    });

Http::shutdown()
    ->inject('bootTime')
    ->action(function(float $bootTime) {
        $uptime = \microtime(true) - $bootTime;
        \var_dump("Process uptime: " . $uptime . " seconds");
    });
bash
php -S localhost:8000 src/server.php