Je ne comprends pas pourquoi nous avons besoin body-parser
d'une application Express, car nous pouvons obtenir des données sans utiliser body-parser
. Et que fait-il réellement et comment?
node.js
express
body-parser
jiten
la source
la source
req.body
req.headers
(tableau), vous pouvez lire le corps du paquet http commereq.body
expliqué par @CleanCrispCode et vous pouvez lire comme paramètre de requêtereq.query.variable
, cela aide car express transforme automatiquement la demande en javascript objetsres.body
sans que le flux entier soit tamponné enres.body
premier.Réponses:
Pour gérer la
HTTP POST
demande dans Express.js version 4 et supérieure, vous devez installer le module middleware appelébody-parser
.body-parser
extraire la totalité du corps d'un flux de demandes entrantes et l'exposereq.body
.Le middleware faisait partie d'Express.js auparavant, mais maintenant vous devez l'installer séparément.
Ce
body-parser
module analyse les données codées JSON, tampon, chaîne et URL soumises à l'aide de laHTTP POST
demande. Installez à l'body-parser
aide de NPM comme indiqué ci-dessous.modifier en 2019-avril-2: dans [email protected] le middleware body-parser fourni avec express. pour plus de détails voir ceci
la source
urlencoded()
etjson()
sont en fait des usines de middleware qui renvoient une fonction de middleware qui invoquenext()
Oui, nous pouvons travailler sans
body-parser
. Lorsque vous ne l'utilisez pas, vous obtenez la demande brute, et votre corps et vos en-têtes ne sont pas dans l'objet racine du paramètre de demande. Vous devrez manipuler individuellement tous les champs.Ou vous pouvez l'utiliser
body-parser
, car l'équipe express le maintient.Ce que l'analyseur corporel peut faire pour vous: il simplifie la demande.
Comment l'utiliser: Voici un exemple:
Installer
npm install body-parser --save
Voici comment utiliser l'analyseur de corps en express:
Lien.
https://github.com/expressjs/body-parser .
Et puis vous pouvez obtenir le corps et les en-têtes dans l'objet de demande racine. Exemple
la source
La réponse ici l' explique de façon très détaillée et brillante, la réponse contient:
Vous pouvez vous référer à github body-parser pour lire leur documentation, il contient des informations concernant son fonctionnement.
la source
Essayons de garder cela le moins technique.
Supposons que vous envoyez des données de formulaire html au serveur node-js, c'est-à-dire que vous avez fait une demande au serveur. Le fichier serveur recevrait votre demande sous un objet de demande. Maintenant, par logique, si vous consignez cet objet de requête dans votre fichier serveur, vous devriez voir vos données de formulaire quelque part, qui pourraient être extraites ensuite, mais whoa! vous ne le faites pas vraiment!
Alors, où sont nos données? Comment allons-nous l'extraire si ce n'est pas seulement présent dans ma demande.
Une explication simple à cela est que http envoie vos données de formulaire en morceaux qui sont destinés à être assemblés lorsqu'ils atteignent leur destination. Alors, comment voulez-vous extraire vos données.
Mais, pourquoi prendre cette peine de toujours analyser manuellement vos données pour les morceaux et les assembler. Utilisez quelque chose appelé «analyseur corporel» qui ferait cela pour vous.
body-parser analyse votre demande et la convertit en un format à partir duquel vous pouvez facilement extraire les informations pertinentes dont vous pourriez avoir besoin.
Par exemple, supposons que vous ayez un formulaire d'inscription à votre frontend. Vous le remplissez et demandez au serveur de sauvegarder les détails quelque part.
Extraire le nom d'utilisateur et le mot de passe de votre demande est aussi simple que ci-dessous si vous utilisez l'analyseur corporel.
Donc, fondamentalement, l'analyseur de corps a analysé votre demande entrante, assemblé les morceaux contenant vos données de formulaire, puis créé cet objet corps pour vous et l'a rempli avec vos données de formulaire.
la source
Il analyse le corps de la requête HTTP. Cela est généralement nécessaire lorsque vous avez besoin de savoir plus que l'URL que vous frappez, en particulier dans le contexte d'une requête HTTP POST ou PUT PATCH où les informations que vous souhaitez contenir sont contenues dans le corps.
Fondamentalement, c'est un middleware pour analyser JSON, du texte brut ou simplement renvoyer un objet Buffer brut pour que vous puissiez le traiter selon vos besoins.
la source
Afin d'avoir accès aux données postales que nous devons utiliser
body-parser
. Fondamentalement, qu'est-cebody-parser
qui permet à express de lire le corps, puis de l'analyser en unJson
objet que nous pouvons comprendre.la source
Ce sont toutes des questions de commodité.
Fondamentalement, si la question était "Avons-nous besoin d'utiliser
body-parser
?" La réponse est non'. Nous pouvons trouver les mêmes informations à partir du client après la demande en utilisant un itinéraire plus détourné qui sera généralement moins flexible et augmentera la quantité de code que nous devons écrire pour obtenir les mêmes informations.C'est un peu la même chose que de demander "Avons-nous besoin d'utiliser
express
pour commencer?" Encore une fois, la réponse est non, et encore une fois, tout se résume à nous épargner les tracas de l'écriture de plus de code pour faire les choses de base qui expriment est livré avec «intégré».En surface -
body-parser
facilite l'accès aux informations contenues dans les demandes des clients dans une variété de formats au lieu de vous faire capturer les flux de données brutes et de déterminer le format des informations, et encore moins d'analyser manuellement ces informations en données utilisables.la source
Comprendre le corps des demandes
Comprendre l'analyseur corporel
Selon sa documentation
Comme vous l'avez vu dans le premier exemple, nous avons dû analyser manuellement le flux de demandes entrantes pour extraire le corps. Cela devient un peu fastidieux lorsqu'il existe plusieurs données de formulaire de différents types. Nous utilisons donc le package body-parser qui fait toutes ces tâches sous le capot.
Il fournit quatre modules pour analyser différents types de données
Après avoir le parseur de contenu brut, vous utiliserez l'une des stratégies ci-dessus (selon le middleware que vous avez décidé d'utiliser) pour analyser les données. Vous pouvez en savoir plus sur eux en lisant leur documentation.
Après avoir défini le
req.body
sur le corps analysé, l'analyseur de corps invoqueranext()
pour appeler le prochain middleware dans la pile, qui pourra alors accéder aux données de la demande sans avoir à réfléchir à la façon de le décompresser et de l'analyser.la source