POST large JSON Data without cURL call in Node.js

Shridhar-Bhande-Photo

Shridhar Bhande

22 de Marzo 2018

Información básica de cURL:

Curl se usa para transferir datos a un servidor y también para obtener datos desde un servidor, usando uno de los protocolos compatibles (HTTP, HTTPS, FTP). Con cURL podemos hacer cosas como soporte de proxy, autenticación de usuario, carga de archivos, publicación HTTP, conexiones SSL, y muchas otras cosas. cURL se puede usar de muchas diferentes maneras. Pero hay algunas limitaciones en la llamada cURL en Node.js y son las siguientes:

Limitación de la llamada cURL POST en Node.js:

Cuando usamos el módulo ‘curlrequest’ npm en Node, hay algunas limitaciones (como que no puede pasar datos de más de 100KB a través de cURL en Node.js) para superar estas limitaciones, podemos usar el módulo ‘request’ npm para llamar a terceras APIs. Y cuando tratamos de enviar un archivo más pequeño (con un cuerpo o tamaño más pequeño) usando la llamada cURL, funciona. Cuando enviamos la solicitud usando Postman, funciona bien incluso con el archivo grande. Pero el problema con cURL es cuando tratamos de enviar datos JSON grandes a través de una llamada cURL en Node.js y luego aparece el siguiente error:

internal/child_process.js:319
 throw errnoException(err, 'spawn');
 ^
Error: spawn E2BIG
 at exports._errnoException (util.js:1050:11)
 at ChildProcess.spawn (internal/child_process.js:319:11)
 at Object.exports.spawn (child_process.js:378:9)
 at module.exports (/Users/Leon/Desktop/demo-repository/node_modules/curlrequest/spawn.js:19:30)
 at Object.exports.request (/Users/Leon/Desktop/demo-repository/node_modules/curlrequest/index.js:248:17)
 at Object. (/Users/Leon/Desktop/demo-repository/test.js:40:10)
 at Module._compile (module.js:571:32)
 at Object.Module._extensions..js (module.js:580:10)
 at Module.load (module.js:488:32)
 at tryModuleLoad (module.js:447:12)

Uso del módulo NPM ‘request’ en Node.js:

Para resolver el problema anterior, podemos usar el módulo ‘request’ npm para enviar datos JSON grandes a través de Node.js sin usar cURL. La biblioteca ‘solicitud’ es mucho más fácil de usar que el módulo http predeterminado y se ha utilizado en la comunidad Node.js durante varios años. Puede instalarlo como una dependencia de npm en su proyecto Node.js. Ejecute lo siguiente en su terminal desde el directorio en el que desea que viva su código:

npm install request

Cómo funciona el módulo ‘request’ en Node.js:

La conexión a APIs externas es fácil en Node. Simplemente necesita el módulo básico básico de HTTP y comenzar a llamar a las API externas. Hay muchas formas de llamar a una APIs externa. En NPM, puede encontrar varios módulos que pueden ayudarle a llamar a terceras APIs. Por ejemplo, los módulos de “request” y “superagent” se utilizan para llamar a APIs externas.

Uso del módulo Request en Node.js:

    1. Enviar una solicitud GET con código de muestra:
      const options = {
       method: 'GET',
       url: '----API url------',
       headers: {
      Authorization: "Basic " + new Buffer("---API credentials---").toString("base64")
       },
      }
      request(options)
       .then(function (response) {
       // Handle success response data
       })
       .catch(function (err) {
       // Handle err response
       })
      
    2. Enviar una solicitud POST con código de muestra:
      const options = {
       method: 'POST',
       url: '----API url------',
       headers: {
      Authorization: "Basic " + new Buffer("---API credentials---").toString("base64")
       },
       body: {
       // send body data here
       }
       json: true // JSON stringifies the body automatically
      }
      request(options)
       .then(function (response) {
       // Handle success response data
       })
       .catch(function (err) {
       // Handle err response
       })
      
    3. También puede agregar parámetros de cadena de consulta, solo tiene que agregar la propiedad qs al objeto de opciones:
      const options = {
       method: 'GET',
       url: '----API url------',
       qs: {
       limit: 10,
       skip: 20,
       sort: 'asc'
       }
      }
      

Nota: Error handling (manejo de errores) El manejo de errores es una parte esencial al realizar solicitudes a APIs externas, ya que nunca podemos estar seguros de lo que les sucederá. Además de los errores de nuestro cliente, el servidor puede responder con un error diferente o puede tener datos diferentes en diferentes formatos. Tenga esto en cuenta cuando intente manejar la respuesta de la API externa. Además, es bueno utilizar el bloque catch para evitar la respuesta de API externa.

Referencia:

Request a quote