Comment puis-je faire une requête HTTP POST sortante, avec des données, dans node.js?
node.js
http
post
httprequest
marque
la source
la source
node-fetch
ce qui est une implémentation de lafetch
méthode JavaScript native pour effectuer des requêtes HTTP.Réponses:
Voici un exemple d'utilisation de node.js pour effectuer une requête POST auprès de l'API Google Compiler:
J'ai mis à jour le code pour montrer comment publier des données à partir d'un fichier, au lieu de la chaîne codée en dur. Il utilise la
fs.readFile
commande async pour y parvenir, publiant le code réel après une lecture réussie. S'il y a une erreur, elle est levée et s'il n'y a pas de données, le processus se termine avec une valeur négative pour indiquer l'échec.la source
querystring.stringify()
cela ne prend pas en charge les objets imbriqués , vous pouvez donc utiliser à laqs.stringify()
place.Content-Length
est un octet et pas nécessairement une longueur de chaîne (UTF-16, etc.). L'utilisationBuffer.byteLength(data)
sera toujours correcte.querystring.stringify
doit être votre propre objet de données, et non le courrier indésirable affiché dans cette réponse (qui peut être utile pour les objets basés sur des fichiers?). J'étais coincé là-dessus depuis des lustres ... stackoverflow.com/questions/9768192/… a fourni ma solution complèteCela devient beaucoup plus facile si vous utilisez la bibliothèque de requêtes .
En plus de fournir une belle syntaxe, il facilite les requêtes json, gère la signature automatique (pour twitter, etc.), peut faire des formulaires en plusieurs parties (par exemple pour télécharger des fichiers) et le streaming.
Pour installer la commande use request
npm install request
la source
Vous pouvez utiliser la bibliothèque de requêtes. https://www.npmjs.com/package/request
Pour publier des données JSON:
Pour publier des données xml:
la source
J'utilise Restler et Needle à des fins de production. Ils sont tous deux beaucoup plus puissants que httprequest natif. Il est possible de demander avec une authentification de base, une entrée d'en-tête spéciale ou même des fichiers de téléchargement.
Quant aux opérations post / get, elles sont également beaucoup plus simples à utiliser que les appels ajax bruts utilisant httprequest.
la source
Simple et sans dépendance. Utilise une promesse pour que vous puissiez attendre le résultat. Il renvoie le corps de la réponse et ne vérifie pas le code d'état de la réponse.
Usage:
la source
write
méthodereq,write()
?Vous pouvez également utiliser Requestify , un client HTTP vraiment cool et simple que j'ai écrit pour nodeJS +, il prend en charge la mise en cache.
Procédez simplement comme suit:
la source
Mise à jour 2020:
J'ai vraiment apprécié phin - Le client HTTP Node.js ultra-léger
Il peut être utilisé de deux manières différentes. L'un avec des promesses (Async / Await) et l'autre avec des styles de rappel traditionnels.
Installer via:
npm i phin
Directement depuis son fichier README avec
await
:Style (rappel) sans compromis:
En 2015, il existe maintenant une grande variété de bibliothèques différentes qui peuvent accomplir cela avec un codage minimal. Je préfère de loin les bibliothèques élégantes et légères pour les requêtes HTTP, sauf si vous avez absolument besoin de contrôler les éléments HTTP de bas niveau.
Une de ces bibliothèques est Unirest
Pour l'installer, utilisez
npm
.$ npm install unirest
Et sur l'
Hello, World!
exemple auquel tout le monde est habitué.Extra:
Beaucoup de gens suggèrent également l'utilisation de la demande [2]
Il convient de noter que les coulisses
Unirest
utilisent larequest
bibliothèque.Unirest fournit des méthodes pour accéder directement à l'objet de demande.
Exemple:
la source
la source
Il existe des dizaines de bibliothèques open-source que vous pouvez utiliser pour effectuer une requête HTTP POST dans Node.
1. Axios (recommandé)
2. Aiguille
3. Demande
4. Module HTTPS natif
Pour plus de détails, consultez cet article .
la source
C'est la manière la plus simple que j'utilise pour faire une requête: en utilisant le module 'request'.
Commande pour installer le module 'request':
Exemple de code:
Vous pouvez également utiliser le module «http» intégré de Node.js pour effectuer une demande.
la source
J'aime la simplicité de superagent ( https://github.com/visionmedia/superagent ). Même API sur le nœud et le navigateur.
Il existe également un nœud-fetch ( https://www.npmjs.com/package/node-fetch ), qui possède une API qui correspond
fetch
aux navigateurs - cependant cela nécessite un encodage manuel des chaînes de requête, ne gère pas automatiquement les types de contenu, ou comme le fait tout autre superagent de travail.la source
Si vous recherchez des requêtes HTTP basées sur des promesses, axios fait bien son travail.
OU
la source
Pour poster une requête Rest / JSON
Nous pouvons simplement utiliser le package de requête et enregistrer les valeurs que nous devons envoyer dans la variable Json.
Installez d'abord le package requis dans votre console à la demande d'installation de npm --save
la source
J'ai trouvé une vidéo qui explique comment y parvenir: https://www.youtube.com/watch?v=nuw48-u3Yrg
Il utilise le module "http" par défaut avec les modules "querystring" et "stringbuilder". L'application prend deux nombres (en utilisant deux zones de texte) à partir d'une page Web et lors de la soumission, retourne la somme de ces deux (ainsi que la persistance des valeurs dans les zones de texte). C'est le meilleur exemple que j'ai pu trouver ailleurs.
la source
C'est ma solution pour
POST
etGET
.À propos de la
Post
méthode:Si le corps est un objet JSON, il est donc important de le désérialiser avec
JSON.stringify
et éventuellement de définir l'en-Content-Lenght
tête en conséquence:avant de l'écrire à la demande:
À propos des deux
Get
et desPost
méthodes:Le
timeout
peut se produire comme unesocket
déconnexion, vous devez donc enregistrer son gestionnaire comme:pendant que le
request
gestionnaire estJe suggère fortement d'enregistrer les deux gestionnaires.
Le corps de réponse est fragmenté, vous devez donc concaténer des morceaux au
data
gestionnaire:Au
end
l'body
contiendra tout le corps de réponse:Il est sûr d'envelopper avec un
try
... catchthe
JSON.parse` car vous ne pouvez pas être sûr qu'il s'agit d'un json bien formaté et il n'y a aucun moyen de s'en assurer au moment où vous faites la demande.Module:
SimpleAPI
Usage:
la source
Après avoir eu beaucoup de mal à créer un utilitaire de bas niveau pour gérer le message et obtenir des demandes pour mon projet, j'ai décidé de publier mes efforts ici. Sur le modèle de la réponse acceptée, voici un extrait pour effectuer des requêtes POST http et https pour l'envoi de données JSON.
la source
Ou vous pouvez utiliser cette bibliothèque:
la source
request
bibliothèque est obsolète.Axios est un client HTTP basé sur les promesses pour le navigateur et Node.js. Axios facilite l'envoi de requêtes HTTP asynchrones aux points de terminaison REST et la réalisation d'opérations CRUD. Il peut être utilisé en JavaScript simple ou avec une bibliothèque telle que Vue ou React.
la source
Publier un autre exemple axios d'une demande axios.post qui utilise des options de configuration supplémentaires et des en-têtes personnalisés.
la source
En utilisant la dépendance de demande .
Solution simple:
la source
request
vient-il?Request-Promise
Fournit une réponse basée sur la promesse. Les codes de réponse http autres que 2xx entraîneront le rejet de la promesse. Cela peut être écrasé en définissant options.simple = falsela source