Pieprasījumi

Flight īsteno HTTP pieprasījumu kā vienu objektu, ko var piekļūt, izpildot:

$request = Flight::request();

Tipiskie Lietojumi

Strādājot ar pieprasījumu tīmekļa lietotnē, parasti vēlēsities izņemt galveni, vai $_GET vai $_POST parametru, vai pat neapstrādāto pieprasījuma ķermeni. Flight nodrošina vienkāršu saskarni, lai veiktu visas šīs darbības.

Šeit ir piemērs, kā iegūt vaicājuma virknes parametru:

Flight::route('/search', function(){
    $keyword = Flight::request()->query['keyword'];
    echo "Jūs meklējat: $keyword";
    // vaicā datubāzei vai kaut kam citam ar $keyword
});

Šeit ir piemērs varbūt veidlapai ar POST metodi:

Flight::route('POST /submit', function(){
    $name = Flight::request()->data['name'];
    $email = Flight::request()->data['email'];
    echo "Jūs iesniedzāt: $name, $email";
    // saglabājiet datubāzē vai kaut kam citam ar $name un $email
});

Pieprasījuma Objekta Atribūti

Pieprasījuma objekts nodrošina šādus atribūtus:

  • body - Neapstrādātais HTTP pieprasījuma ķermenis
  • url - Pieprasītā URL
  • base - URL vecāku apakšdirektorija
  • method - Pieprasījuma metode (GET, POST, PUT, DELETE)
  • referrer - Atsauces URL
  • ip - Klienta IP adrese
  • ajax - Vai pieprasījums ir AJAX pieprasījums
  • scheme - Servera protokols (http, https)
  • user_agent - Pārlūka informācija
  • type - Satura tips
  • length - Satura garums
  • query - Vaicājuma virknes parametri
  • data - POST dati vai JSON dati
  • cookies - Sīkdatņu dati
  • files - Augšupielādēti faili
  • secure - Vai savienojums ir drošs
  • accept - HTTP pieņemšanas parametri
  • proxy_ip - Klienta prokša IP adrese. Skatās $_SERVER masīvā HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, HTTP_X_FORWARDED, HTTP_X_CLUSTER_CLIENT_IP, HTTP_FORWARDED_FOR, HTTP_FORWARDED tā secībā.
  • host - Pieprasījuma saimniekdatora nosaukums

Jūs varat piekļūt query, data, cookies un files atribūtiem kā masīviem vai objektiem.

Tātad, lai iegūtu vaicājuma virknes parametru, varat darīt:

$id = Flight::request()->query['id'];

Vai arī varat darīt:

$id = Flight::request()->query->id;

NEAPSTRĀDĀTA PIEPRASĪJUMA ĶERMENIS

Lai iegūtu neapstrādāto HTTP pieprasījuma ķermeni, piemēram, strādājot ar PUT pieprasījumiem, varat darīt:

$body = Flight::request()->getBody();

JSON Ievade

Ja jūs sūtāt pieprasījumu ar tipu application/json un datiem {"id": 123} tas būs pieejams no data atribūta:

$id = Flight::request()->data->id;

$_GET

Jūs varat piekļūt $_GET masīvam, izmantojot query atribūtu:

$id = Flight::request()->query['id'];

$_POST

Jūs varat piekļūt $_POST masīvam, izmantojot data atribūtu:

$id = Flight::request()->data['id'];

Jūs varat piekļūt $_COOKIE masīvam, izmantojot cookies atribūtu:

$myCookieValue = Flight::request()->cookies['myCookieName'];

$_SERVER

Ir pieejams īsceļš, lai piekļūtu $_SERVER masīvam, izmantojot getVar() metodi:

$host = Flight::request()->getVar['HTTP_HOST'];

Piekļuve Augšupielādētajiem Failiem, izmantojot $_FILES

Jūs varat piekļūt augšupielādētajiem failiem, izmantojot files atribūtu:

$uploadedFile = Flight::request()->files['myFile'];

Failu Augšupielādes Apstrāde

Jūs varat apstrādāt failu augšupielādes, izmantojot ietvaru ar dažām palīgdarbībām. Tas būtībā samazinās līdz faila datu vilkšanai no pieprasījuma un pārvietošanai uz jaunu vietu.

Flight::route('POST /upload', function(){
    // Ja jums bija ievades lauks, piemēram, <input type="file" name="myFile">
    $uploadedFileData = Flight::request()->getUploadedFiles();
    $uploadedFile = $uploadedFileData['myFile'];
    $uploadedFile->moveTo('/path/to/uploads/' . $uploadedFile->getClientFilename());
});

Ja jums ir vairāki augšupielādēti faili, varat tos aplūkot:

Flight::route('POST /upload', function(){
    // Ja jums bija ievades lauks, piemēram, <input type="file" name="myFiles[]">
    $uploadedFiles = Flight::request()->getUploadedFiles()['myFiles'];
    foreach ($uploadedFiles as $uploadedFile) {
        $uploadedFile->moveTo('/path/to/uploads/' . $uploadedFile->getClientFilename());
    }
});

Drošības Piezīme: Vienmēr validējiet un sanitizējiet lietotāju ievadi, īpaši, strādājot ar failu augšupielādēm. Vienmēr validējiet pieļaujamo paplašinājumu tipus, ko ļausiet augšupielādēt, bet jums arī jāvalidē faila "burvju baiti", lai pārliecinātos, ka tas patiešām ir tāda tipu fails, kādu lietotājs apgalvo. Ir pieejami raksti un bibliotēkas, kuras var jums palīdzēt ar to.

Pieprasījuma Galvenes

Jūs varat piekļūt pieprasījuma galvenēm, izmantojot getHeader() vai getHeaders() metodi:

// Varbūt jums ir nepieciešama autorizācijas galvene
$host = Flight::request()->getHeader('Authorization');
// vai
$host = Flight::request()->header('Authorization');

// Ja jums nepieciešams iegūt visas galvenes
$headers = Flight::request()->getHeaders();
// vai
$headers = Flight::request()->headers();

Pieprasījuma Ķermenis

Jūs varat piekļūt neapstrādātajam pieprasījuma ķermenim, izmantojot getBody() metodi:

$body = Flight::request()->getBody();

Pieprasījuma Metode

Jūs varat piekļūt pieprasījuma metodei, izmantojot method atribūtu vai getMethod() metodi:

$method = Flight::request()->method; // faktiski zvana getMethod()
$method = Flight::request()->getMethod();

Piezīme: getMethod() metode vispirms ņem metodi no $_SERVER['REQUEST_METHOD'], pēc tam to var pārrakstīt ar $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'], ja tas pastāv, vai $_REQUEST['_method'], ja tas pastāv.

Pieprasījuma URL

Ir pieejamas dažas palīgmetodes, lai ērti saliktu URL daļas.

Pilns URL

Jūs varat piekļūt pilnam pieprasījuma URL, izmantojot getFullUrl() metodi:

$url = Flight::request()->getFullUrl();
// https://example.com/some/path?foo=bar

Pamata URL

Jūs varat piekļūt pamata URL, izmantojot getBaseUrl() metodi:

$url = Flight::request()->getBaseUrl();
// Pievērsiet uzmanību, nav beigu slīpsvītras.
// https://example.com

Vaicājuma Analīze

Jūs varat nodot URL uz parseQuery() metodi, lai analizētu vaicājuma virkni asociatīvā masīvā:

$query = Flight::request()->parseQuery('https://example.com/some/path?foo=bar');
// ['foo' => 'bar']