đ Request
Introductionâ
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
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.
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;
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);
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.