Salt la conținut

HTTP

Leto oferă wrappere subțiri peste componentele HTTP din Symfony pentru lucrul cu request-ul curent, construirea răspunsurilor și redirect-uri. Această pagină acoperă Request, Response, Redirect, URL și User.

Request

Leto\Http\Request extinde clasa Request din Symfony. Pe lângă toate metodele Symfony, adaugă câteva specifice Leto:

use Leto\Http\Request;

// Obține instanța request-ului curent
$req = request();

// Verifică dacă e o cerere AJAX
if ($req->ajax()) { ... }

// Obține URI-ul cererii (poți seta un offset cu $req->setRequestOffset(int))
$uri = $req->getRequestUri();

// Verifică dacă URL-ul se potrivește cu un regex
if ($req->matchRequest('/^\/api\//')) {
    // e o rută de API
}

Response

Leto\Http\Response extinde clasa Response din Symfony. O comoditate în plus: dacă îi pasezi un array, îl convertește automat în JSON și setează header-ul Content-Type: application/json.

use Leto\Http\Response;

return new Response('Conținut HTML');
return new Response(['status' => 'ok', 'data' => $rezultate]);  // JSON automat

Redirect

Leto\Http\Redirect extinde Response. Prefixează automat URL-urile relative cu base_url(), deci nu trebuie să-ți bați capul cu path-uri absolute.

Setup unic: Redirect folosește funcția globală base_url(), pe care o oferi tu la nivel de aplicație (framework-ul nu impune o implementare, ca să poți controla schema și host-ul). Adaug-o o dată în helper-ele aplicației:

function base_url(string $path = ''): string
{
    return request()->getSchemeAndHttpHost() . $path;
}
use Leto\Http\Redirect;

// Redirect permanent (301, implicit)
return new Redirect('/users');

// Redirect temporar
return (new Redirect('/users', 302));

URL

Leto\Http\URL oferă metode statice pentru a lucra cu URL-uri:

use Leto\Http\URL;

// URL-ul complet al paginii curente
$fullUrl = URL::getFull();

// Construiește un query string din parametrii dați
$queryString = URL::editURI(['page' => 2, 'sort' => 'name']);  // "page=2&sort=name"

// Redirect direct (trimite header Location + exit)
URL::redirect('/login');

Setup unic: URL::redirect() se sprijină pe metoda statică URL::getBase(), pe care o furnizezi la nivel de aplicație (prin extinderea clasei URL), la fel ca base_url() de mai sus:

public static function getBase(): string
{
    return request()->getSchemeAndHttpHost();
}

User

Leto\Http\User oferă informații despre clientul care face cererea:

use Leto\Http\User;

$userAgent = User::getAgent();         // User-Agent trimis de browser
$ip = User::getIp();                   // Adresa IP a clientului
$inBrowser = User::isInBrowser();      // true dacă e browser web
$inApp = User::isInApp();              // true dacă e aplicația mobilă Workleto
$deviceType = User::getDeviceType();   // 'web', 'ios', 'android' sau 'windows'