Aller au contenu principal
Version: 5.x

🚀 Request

Introduction​

À propos des requĂȘtes HTTP

Une requĂȘte HTTP est le message que l'utilisateur envoie Ă  l'application Bow via son navigateur ou d'autres outils tels que curl, httpie, etc.

Ce message est traitĂ© par Bow Ă  travers la classe Bow\Http\Request. Cette classe vous permet d'avoir les informations sur la requĂȘte envoyĂ©e par l'utilisateur comme son adresse IP, le type du message, les informations d'un formulaire, etc.

AccĂ©der Ă  la requĂȘte​

Pour capturer un message ou requĂȘte HTTP, vous pouvez premiĂšrement utiliser le helper request() qui vous donne une instance de Bow\Http\Request, deuxiĂšmement vous pouvez passer par l'injecteur de dĂ©pendance via une action de contrĂŽleur.

RĂ©cupĂ©ration des donnĂ©es​

En utilisant quelques méthodes simples, vous pouvez accéder à toutes les entrées utilisateur de votre application.

Via des Closures de route​

  • Avec le helper request:
$app->get('/', function () {
$request = request();

$name = $request->get('name');
// code ici
});
  • Par l'injection de dĂ©pendance
routes/app.php
use Bow\Http\Request;

$app->get('/', function (Request $request) {
return $request->get('name');
});

Via un controller​

Si votre méthode de contrÎleur attend également une entrée d'un paramÚtre de route, vous devez répertorier les paramÚtres de votre route aprÚs vos autres dépendances. Par exemple, si votre route est définie comme suit :

$app->get('/users/:id', 'UserController::show');

Vous pouvez toujours taper la requĂȘte Bow\Http\Request et accĂ©der Ă  l'id de votre paramĂštre de route en dĂ©finissant votre mĂ©thode de contrĂŽleur comme suit:

namespace App\Controllers;

use App\Controllers\Controller;
use App\Models\User;
use Bow\Http\Request;

class UserController extends Controller
{
/**
* Afficher le profil pour l'utilisateur donné
*
* @param Request $request
* @return mixed
*/
public function show(Request $request, $id)
{
$user = User::where('id', $id)->first();

$user->name = $request->get('name');

$user->save();

return $this->render('user/profile', ['user' => $user]);
}
}

Chemin de requĂȘte et mĂ©thode​

RĂ©cupĂ©rer le chemin de requĂȘte​

La mĂ©thode path renvoie les informations de chemin de la requĂȘte. Ainsi, si la requĂȘte entrante est ciblĂ©e sur http://example.com/bar/zar, la mĂ©thode path retournera bar/zar:

$uri = $request->path();

La mĂ©thode is vous permet de vĂ©rifier que le chemin de requĂȘte entrant correspond Ă  un modĂšle donnĂ©. Vous pouvez utiliser le caractĂšre * comme caractĂšre gĂ©nĂ©rique lorsque vous utilisez cette mĂ©thode:

if ($request->is('users/*')) {
//
}

RĂ©cupĂ©rer la mĂ©thode de requĂȘte​

La mĂ©thode method retournera le verbe HTTP pour la requĂȘte. Vous pouvez utiliser les mĂ©thodes isPost, isGet, isPut, isDelete, isOptions, isPatch pour vĂ©rifier que le verbe HTTP correspond Ă  une mĂ©thode HTTP de la requĂȘte donnĂ©e :

$method = $request->method();

if ($request->isPost()) {
$filename = $request->file('filename');
$filename->moveTo('/some/directory');
}

VĂ©rifier si la requĂȘte est en AJAX​

Pour dĂ©terminer si une requĂȘte a Ă©tĂ© envoyĂ©e via AJAX, la mĂ©thode isAjax vous permet de vĂ©rifier cela.

if ($request->isAjax()) {
//
}

VĂ©rifier si la requĂȘte attend une rĂ©ponse JSON​

La mĂ©thode wantsJson vous permet de vĂ©rifier si la requĂȘte attend une rĂ©ponse au format JSON. Souvent, les requĂȘtes AJAX sont envoyĂ©es avec l'en-tĂȘte Accept: application/json, la mĂ©thode wantsJson vĂ©rifie si cet en-tĂȘte est prĂ©sent dans la requĂȘte.

if ($request->wantsJson()) {
// code ici
}

RĂ©cupĂ©rer une entrĂ©e​

Souvent, la requĂȘte envoyĂ©e par le client HTTP contient des donnĂ©es souvent demandĂ©es pour actionner un mĂ©canisme, par exemple celui d'une inscription.

Optimisation des données

Bow Framework, dans son démarrage, optimise les données envoyées au serveur en remplaçant les valeurs vides par null et en supprimant les espaces dans les valeurs de chaque champ avec la fonction PHP trim.

$name = $request->get('name');

// Récupérer directement la valeur via le nom du champ
$name = $request->name;
Valeur par défaut

Vous pouvez aussi définir une valeur par défaut à get.

$name = $request->get('name', 'Papac');

$name = $request->get('name', function () {
return User::first()->name;
});

Ceci permet justement de rĂ©cupĂ©rer le contenu du champ name d'un formulaire ou d'une URL en fonction du type de requĂȘte.

RĂ©cupĂ©ration d'une partie des donnĂ©es d'entrĂ©e​

Si vous devez extraire un sous-ensemble des données d'entrée, vous pouvez utiliser les méthodes ignore et only. Ces deux méthodes acceptent un seul tableau ou une liste d'arguments dynamique:

$input = $request->only(['name', 'lastname']);

$input = $request->only('name', 'lastname');

$input = $request->ignore(['password']);

$input = $request->ignore('password');

DĂ©terminer si une valeur d'entrĂ©e est prĂ©sente​

Vous devez utiliser la mĂ©thode has pour dĂ©terminer si une valeur est prĂ©sente sur la requĂȘte. La mĂ©thode has renvoie true si la valeur est prĂ©sente dans la requĂȘte:

if ($request->has('name')) {
//
}

DĂ©terminer l'adresse IP du client​

Souvent, vous allez vouloir rĂ©cupĂ©rer l'adresse IP du client ayant envoyĂ© la requĂȘte. La mĂ©thode ip permet, comme son nom l'indique, de rĂ©cupĂ©rer l'adresse IP du client :

$ip = $request->ip();

if ($ip == 'xxx.xxx.xxx.xxx') {
// code ici
}

DĂ©terminer le port du client​

La méthode port permet, comme son nom l'indique, de récupérer le port du client :

$port = $request->port();

// Code ici

DĂ©terminer le protocole du client​

La méthode protocol permet, comme son nom l'indique, de récupérer le protocole du client :

$protocol = $request->protocol();

// Code ici

Il y a aussi la méthode isProtocol qui permet de faire de la vérification sur le protocole :

if ($request->isProtocol('http')) {
//
}

Et isSecure vous permet de vĂ©rifier si la requĂȘte est sĂ©curisĂ©e.

if ($request->isSecure()) {
//
}

RĂ©cupĂ©rer les en-tĂȘtes HTTP​

Vous avez la possibilitĂ© de rĂ©cupĂ©rer les en-tĂȘtes HTTP du client avec la mĂ©thode getHeader et hasHeader pour vĂ©rifier l'existence d'un en-tĂȘte HTTP.

$header = $request->getHeader('content-type');

echo $header;
// text/html

if ($request->hasHeader('x-proxy-key')) {
// code ici
}

RĂ©cupĂ©rer l'IP du serveur​

Vous avez la possibilité de récupérer l'adresse IP du serveur sur lequel votre application Bow est hébergée.

$hostname = $request->hostname();

echo $hostname;
// exemple.com

RĂ©cupĂ©rer le domaine Origin​

Le domaine dit origin est l'adresse rĂ©cupĂ©rĂ©e avec la mĂ©thode hostname ensuite associĂ©e au protocole de la requĂȘte.

$hostname = $request->origin();

echo $hostname;
// https://exemple.com

RĂ©cupĂ©rer le temps de la requĂȘte​

Il est souvent intĂ©ressant de voir combien de temps a pris une requĂȘte. La mĂ©thode time permet de le faire et elle retourne un timestamp.

$time = $request->time();

echo $time;

RĂ©cupĂ©rer une instance de la session​

Il est souvent intéressant de manipuler la session directement. La méthode session permet de le faire et elle retourne l'instance de la session.

$session = $request->session();

var_dump($session);
En savoir plus

Pour plus d'informations sur la session, visitez la page HTTP Session.

RĂ©cupĂ©rer l'authentification courante​

Vous pouvez aussi avoir l'authentification en cours si vous avez utilisé le systÚme d'authentification native de Bow Framework.

$user = $request->user();

// Définir le guard
$user = $request->user('api');

Il manque quelque chose ?

Si vous rencontrez des problÚmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.