Inspecteur de requêtes
Les dernières requêtes de vos serveurs de dev avec leurs en-têtes et leurs corps, des filtres, le rejeu tel quel ou modifié, et la copie en cURL.
L’onglet Inspecteur (Q) garde les dernières requêtes de chaque domaine du projet, avec leurs en-têtes et leurs corps. Vous y retrouvez l’appel d’API qui a échoué, vous le rejouez tel quel ou modifié, et vous le copiez en cURL. Comme Analytics, il voit ce qui passe par le proxy : les requêtes faites sur un domaine .test, quel que soit le langage du serveur (Laravel, Symfony, Node, Bun, Next.js…).

Ce qui est enregistré
- Les pages et les appels d’API. Les scripts, styles, images et polices, ainsi que la plomberie du serveur de dev (rechargement à chaud, WebSockets, server-sent events), sont laissés de côté, comme dans Analytics.
- Pour chaque requête : la méthode, le chemin avec sa query, le statut, la durée et le temps jusqu’au premier octet, les en-têtes de la requête et de la réponse, et les deux corps.
- Les 200 dernières requêtes de chaque domaine, avec au plus 8 Mo de corps par domaine : les plus anciennes partent en premier.
- Chaque corps est gardé jusqu’à 64 Ko. Au-delà, l’inspecteur l’indique et donne sa taille réelle.
- Un corps compressé (gzip, deflate, brotli) est décompressé pour l’affichage. Un corps binaire (image, PDF…) n’est pas affiché : seuls son type et sa taille le sont.
- Quand le serveur de dev ne répond pas, la requête apparaît avec le statut 502 et la raison, par exemple « Connexion refusée : le serveur de dev n’est pas lancé ».
La liste
Les requêtes arrivent en direct, la plus récente en haut. Au-dessus de la liste :
- Domaine (quand le projet en a plusieurs), Méthode et Statut : 2xx, 3xx, 4xx, 5xx, ou Sans réponse quand le serveur de dev n’a pas répondu.
- Chemin… filtre sur une partie du chemin, query comprise.
- Chercher dans les en-têtes et les corps… cherche un texte dans le chemin, les en-têtes et les corps. Les valeurs secrètes (voir plus bas) ne sont pas fouillées.
- Rejeux ne montre que les requêtes rejouées.
- Pause arrête l’enregistrement des nouvelles requêtes, pour tous les projets ; Reprendre le relance. Les rejeux sont enregistrés même en pause.
- Effacer vide l’inspecteur du projet, ou du domaine choisi.
Le détail d’une requête
Cliquez sur une requête : à droite s’affichent son statut, sa durée, le temps jusqu’au premier octet, les tailles envoyée et reçue, l’heure et le domaine. Puis, pour la Requête et pour la Réponse, les en-têtes et le corps. Un corps JSON est mis en forme ; Brut le montre tel qu’il est arrivé.
Les secrets masqués
Les valeurs des en-têtes Authorization, Proxy-Authorization, Cookie et Set-Cookie s’affichent ••••••. Révéler les montre, Masquer les cache de nouveau. Elles sont gardées telles quelles en mémoire pour que le rejeu fonctionne.
Rejouer une requête
Rejouer renvoie la requête telle quelle : même méthode, même chemin, mêmes en-têtes (secrets compris) et même corps. Elle passe par le proxy vers le serveur de dev, comme si le navigateur l’avait envoyée (avec les mêmes en-têtes X-Forwarded-*), et s’affiche en haut de la liste avec le badge rejeu. Son détail indique la requête d’origine (« rejeu de #12 ») ; un clic y revient. Les rejeux comptent aussi dans Analytics. Le proxy doit être démarré.
Modifier et rejouer ouvre la requête dans un formulaire avant de l’envoyer :
- Méthode et Chemin (il commence par
/, query comprise) ; - En-têtes, un par ligne sous la forme
Nom: valeur. Un secret laissé à••••••garde sa valeur d’origine ; retapez-le pour en envoyer un autre, supprimez la ligne pour ne pas l’envoyer.Content-Lengthest recalculé ; - Corps : un JSON est proposé mis en forme. Un corps binaire est renvoyé tel quel.
Le domaine ne change pas : la requête part toujours vers le serveur de dev de son domaine.
Copier en cURL
Copier en cURL met dans le presse-papiers une commande curl vers https://<domaine><chemin> (avec le port quand le proxy n’écoute pas sur 443), ses en-têtes et son corps. Accept-Encoding est remplacé par --compressed, pour que la réponse soit lisible dans le terminal.
curl -X POST 'https://app.acme.test/api/seances' \
-H 'accept: application/json' \
-H 'authorization: ••••••' \
-H 'content-type: application/json' \
--compressed \
--data-raw '{"patientId":1842,"duree":45}'
Les secrets restent masqués dans la commande, sauf si vous les avez révélés avant de copier. Un corps coupé ou binaire est omis, avec une ligne de commentaire au-dessus de la commande qui le signale.