software issues issue example create all curl node.js

issues - Curl equivalente en nodejs?



jira rest api get all issues (16)

¿Qué tal, por ejemplo, https://github.com/joyent/node/wiki/modules#wiki-tcp . Un resumen muy rápido =>

Estoy buscando utilizar información de una solicitud HTTP usando nodejs (es decir, llamar a un servicio web remoto y repetir la respuesta del cliente).

En PHP habría usado curl para hacer esto. ¿Cuál es la mejor práctica en el nodo?



Dado que parece que node-curl está muerto, lo he bifurcado, renombrado y modificado para que sea más curl y compilar en Windows.

node-libcurl

Ejemplo de uso:

var Curl = require( ''node-libcurl'' ).Curl; var curl = new Curl(); curl.setOpt( Curl.option.URL, ''www.google.com'' ); curl.setOpt( ''FOLLOWLOCATION'', true ); curl.on( ''end'', function( statusCode, body, headers ) { console.info( statusCode ); console.info( ''---'' ); console.info( body.length ); console.info( ''---'' ); console.info( headers ); console.info( ''---'' ); console.info( this.getInfo( Curl.info.TOTAL_TIME ) ); this.close(); }); curl.on( ''error'', function( err, curlErrorCode ) { console.error( err.message ); console.error( ''---'' ); console.error( curlErrorCode ); this.close(); }); curl.perform();

Perform es asincrónico, y no hay forma de usarlo sincrónico actualmente (y probablemente nunca lo tenga).

Todavía está en alfa, pero esto va a cambiar pronto, y se agradece la ayuda.

Ahora es posible usar Easy handle directamente para solicitudes de sincronización, por ejemplo:

var Easy = require( ''node-libcurl'' ).Easy, Curl = require( ''node-libcurl'' ).Curl, url = process.argv[2] || ''http://www.google.com'', ret, ch; ch = new Easy(); ch.setOpt( Curl.option.URL, url ); ch.setOpt( Curl.option.HEADERFUNCTION, function( buf, size, nmemb ) { console.log( buf ); return size * nmemb; }); ch.setOpt( Curl.option.WRITEFUNCTION, function( buf, size, nmemb ) { console.log( arguments ); return size * nmemb; }); // this call is sync! ret = ch.perform(); ch.close(); console.log( ret, ret == Curl.code.CURLE_OK, Easy.strError( ret ) );

¡Además, el proyecto es estable ahora!


El módulo http que usa para ejecutar servidores también se usa para realizar solicitudes remotas.

Aquí está el ejemplo en sus documentos:

var http = require("http"); var options = { host: ''www.google.com'', port: 80, path: ''/upload'', method: ''POST'' }; var req = http.request(options, function(res) { console.log(''STATUS: '' + res.statusCode); console.log(''HEADERS: '' + JSON.stringify(res.headers)); res.setEncoding(''utf8''); res.on(''data'', function (chunk) { console.log(''BODY: '' + chunk); }); }); req.on(''error'', function(e) { console.log(''problem with request: '' + e.message); }); // write data to request body req.write(''data/n''); req.write(''data/n''); req.end();


Es posible que desee intentar usar algo como esto

curl = require(''node-curl''); curl(''www.google.com'', function(err) { console.info(this.status); console.info(''-----''); console.info(this.body); console.info(''-----''); console.info(this.info(''SIZE_DOWNLOAD'')); });


Hay un módulo npm para hacer una solicitud tipo curl, npm curlrequest .

Paso 1: $npm i -S curlrequest

Paso 2: en tu archivo de nodo

let curl = require(''curlrequest'') let options = {} // url, method, data, timeout,data, etc can be passed as options curl.request(options,(err,response)=>{ // err is the error returned from the api // response contains the data returned from the api })

Para una mayor lectura y comprensión, npm curlrequest


Los ejemplos anteriores funcionan, pero no van tan lejos como para tratar realmente con un ejemplo del mundo real (es decir, cuando procesa datos que vienen en múltiples fragmentos. Una cosa de la que debe asegurarse es que tiene un manejador ''en bloque'' que inserta los datos en una matriz (la forma más rápida de hacerlo en JS) y un controlador ''en el extremo'' que los une para que puedas devolverlos.

Esto es especialmente necesario cuando trabaja con grandes solicitudes (más de 5000 líneas) y el servidor le envía una gran cantidad de datos.

Aquí hay un ejemplo en uno de mis programas (coffeescript): https://gist.github.com/1105888



Puede usar el módulo request npm. Súper simple de usar. La solicitud está diseñada para ser la forma más sencilla posible de realizar llamadas http. Es compatible con HTTPS y sigue redirecciones por defecto.

var request = require(''request''); request(''http://www.google.com'', function (error, response, body) { console.log(''error:'', error); // Print the error if one occurred console.log(''statusCode:'', response && response.statusCode); // Print the response status code if a response was received console.log(''body:'', body); // Print the HTML for the Google homepage. });


Puedes intentar usar la aplicación POSTMAN Chrome para tu solicitud y puedes generar el código js del nodo desde allí


Terminé usando la biblioteca grunt-shell .

Here está mi fuente de información para mi tarea Grunt totalmente implementada para cualquier persona que esté pensando en trabajar con la API de EdgeCast. Encontrarás en mi ejemplo que utilizo un grunt-shell para ejecutar el comando curl que purga el CDN.

Esto fue con lo que terminé después de pasar horas tratando de obtener una solicitud HTTP para trabajar dentro de Node. Pude obtener uno trabajando en Ruby y Python, pero no cumplí con los requisitos de este proyecto.


Tuve un problema al enviar datos de POST a la BD de la nube de IOT RaspberryPi, pero después de horas logré entenderlo.

Usé el símbolo del sistema para hacerlo.

sudo curl --URL http://<username>.cloudant.com/<database_name> --user <api_key>:<pass_key> -X POST -H "Content-Type:application/json" --data ''{"id":"123","type":"987"}''

El símbolo del sistema mostrará los problemas: nombre de usuario / contraseña incorrectos; mala solicitud, etc.

--URL database / server location (utilicé Cloudant DB simple) --user es el nombre de usuario de la autenticación: pase ingresé a través de API pass -X define qué comando llamar (PUT, GET, POST, DELETE) -H tipo de contenido - Cloudant se trata de la base de datos de documentos, donde se usa JSON. El contenido de datos se clasifica como JSON.


Usualmente uso REQUEST, es un cliente HTTP simplificado pero poderoso para Node.js

https://github.com/request/request

Está en la npm install request NPM npm install request

Aquí hay una muestra de uso:

var request = require(''request''); request(''http://www.google.com'', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // Show the HTML for the Google homepage. } })


Utiliza reqclient , es un pequeño módulo de cliente además de la request que le permite registrar toda la actividad con estilo cURL (opcional para entornos de desarrollo). También tiene buenas características como análisis de URL y parámetros, integraciones de autenticación, soporte de caché, etc.

Por ejemplo, si crea un objeto de cliente y hace una solicitud:

var RequestClient = require("reqclient").RequestClient; var client = new RequestClient({ baseUrl:"http://baseurl.com/api/v1.1", debugRequest:true, debugResponse:true }); var resp = client.post("client/orders", {"client":1234,"ref_id":"A987"}, {headers: {"x-token":"AFF01XX"}})

Se registrará dentro de la consola algo como esto:

[Requesting client/orders]-> -X POST http://baseurl.com/api/v1.1/client/orders -d ''{"client": 1234, "ref_id": "A987"}'' -H ''{"x-token": "AFF01XX"}'' -H Content-Type:application/json [Response client/orders]<- Status 200 - {"orderId": 1320934}

La solicitud devolverá un objeto Promise , por lo que tendrá que manejar con then y ver qué hacer con el resultado.

reqclient está disponible con npm , puede instalar el módulo con: npm install reqclient .


bueno, si realmente necesitas un curl equivalente, puedes probar node-curl

npm install node-curl

probablemente necesite agregar libcurl4-gnutls-dev .


puedes usar fácilmente el módulo de solicitud:

npmjs.com/package/request

Código de muestra:

var request = require(''request''); request(''http://www.google.com'', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // Show the HTML for the Google homepage. } else { console.log("Error "+response.statusCode) } })