Aller au contenu principal
Version: Canary 🚧

🚀 HTTP Request

Introduction​

Une requĂȘte HTTP est le message que l'utilisateur envoie Ă  l'application Bow via son navigateur ou d'autre outil tel que curl, httpie et autre.

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Ă© par l'utilisateur comme son adresse ip, le type du message, les information 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.

RecupĂ©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
use Bow\Http\Request;

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

Via un controlleur​

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éfini 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 $reuest
* @return mixed
*/
public function show(Request $reuest, $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, isPutch 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Ă© via AJAX, la mĂ©thode isAjax vous permet de vĂ©rifier ça.

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

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

Souvent la requĂȘte envoyĂ© par le client HTTP contient des donnĂ©es souvent demander pour actioner un mecanisme par exemple celui d'une inscription.

Bow Framework dans son démarrage optimise le donnée envoyés au serveur en remplaçant les valeur vide par null et supprimer les spaces blancs dans les valeurs de chaque champs avec la fonction php trim.

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

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

Vous pouvez aussi défini 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'un url en fonction du type de requĂȘte.

RecupĂ©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 de client​

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

$ip = $request->ip();

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

DĂ©terminer le Port de client​

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

$port = $request->port();

// Code ici

DĂ©terminer le protocol de client​

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

$protocol = $request->protocol();

// Code ici

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

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

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

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

RĂ©cupĂ©rer les entĂȘte-https​

Vous avez la possibilitĂ© de rĂ©cupĂ©rer les entĂȘte-https du client avec la mĂ©thode getHeader et hasHeader pour vĂ©rifier l'existance d'une entĂȘte-http.

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

echo $header;
// text/html

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

RĂ©cupĂ©rer le IP du server​

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

$hostname = $request->hostname();

echo $hostname;
// exemple.com

RĂ©cupĂ©rer le domaine Origin​

Le domaine dit origin est l'adresse rĂ©cupĂ©rer avec la mĂ©thode hostname ensuite associĂ© avec le protocol 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Ă©ressent de voir combien de temps Ă  faire une requĂȘte. La mĂ©thode time nous 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éressent de manipuler la session directement. La méthode session nous permet de le faire et elle retourne l'instance de la session.

$session = $request->session();

var_dump($session);

Pour plus d'information sur la session visitez cette page HTTP Session

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

Vous pouvez aussi avoir l'authenticiation en cours si vous avez utiliser le systĂšme d'authentification native de Bow Framework.

$user = $request->user();

// Definir 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.