Este artículo presenta 6 métodos diferentes para iniciar solicitudes HTTP en nodejs. Aquí completaremos el uso de cada método diferente solicitando掘金社区的板块分类接口
como demostración, por supuesto, para imprimir los datos obtenidos con mayor claridad. , necesitamos instalar chalk库
con anticipación para agregar color a los datos impresos. Bien, estamos a punto de comenzar ~
Node.js viene con el módulo https en la biblioteca estándar, por lo que usted no lo necesita. No lo necesito en absoluto Introduzca cualquier biblioteca para iniciar solicitudes, porque el propio node.js puede completarlo y es más que suficiente para manejar algunas solicitudes de datos simples.
const tiza = requerir("tiza") constante https = requerir('https') https.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', res => { dejar lista = []; res.on('datos', trozo => { lista.push(fragmento); }); res.on('fin', () => { const {datos} = JSON.parse(Buffer.concat(lista).toString()); datos.forEach(elemento => { console.log(`${chalk.amarillo.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }); }).on('error', errar => { console.log('Error: ', err.message); });
Tiene una estructura un poco complicada, porque necesitamos crear una lista de matriz vacía para almacenar el fragmento de datos de la solicitud y luego, una vez completada la solicitud, debemos procesar los datos a través de Buffer y luego analizarlos en formato json. .
cree que los amigos del front-end están familiarizados con axios. Es una biblioteca de solicitudes de promesa muy popular. Se puede utilizar tanto en el navegador como en el cliente y, como todos sabemos, también tiene funciones muy convenientes como interceptores y conversión automática de datos a json.
Podemos usar el siguiente comando para instalar axios:
npm i -S axios
Aquí hay un ejemplo simple de cómo obtenemos la clasificación de la sección Nuggets a través de axios:
const chalk = require("chalk") const axios = requerir('axios'); axios.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .entonces(res => { constante {datos} = res.datos datos.forEach(elemento => { console.log(`${chalk.amarillo.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(err => { console.log('Error: ', err.message); });
aquí axios utiliza directamente la solicitud de obtención para solicitar la interfaz. La estructura también puede tener la forma de una promesa y los datos se analizan automáticamente en json, lo que se puede decir que es muy simple y conveniente.
Got afirma ser "una biblioteca de solicitudes HTTP Node.js potente y fácil de usar. La facilidad de uso radica en el uso de la API estilo Promise y la configuración de procesamiento JOSN, y algunas como la compatibilidad con HTTP2, la API de paginación y el almacenamiento en caché de RFC". y otras capacidades no están disponibles en la mayoría de las bibliotecas de solicitudes.
Podemos usar el siguiente comando para instalar got:
npm i -S [email protected]
Aquí hay un ejemplo simple de cómo obtenemos la clasificación de la sección Nuggets a través de got:
const chalk = require("chalk") const tengo = requerir('tengo'); got.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', { Tipo de respuesta: 'json' }) .entonces(res => { constante {datos} = res.cuerpo datos.forEach(elemento => { console.log(`${chalk.amarillo.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(err => { console.log('Error: ', err.message); });
aquí primero debemos configurar la interfaz de solicitud con {responseType: 'json'}
, y luego los datos devueltos se pueden obtener en el cuerpo, que también es muy fácil de usar.
Needle es una biblioteca de solicitudes relativamente simple y compacta. Puede tener la forma de Promesa o función de devolución de llamada. Puede elegirla según sus propios hábitos. Además, su valor de retorno convertirá automáticamente XML y JSON. . de conveniencia.
Podemos usar el siguiente comando para instalar la aguja:
npm i -S aguja
Aquí hay un ejemplo simple de cómo obtenemos la clasificación de la sección Nuggets a través de la aguja:
const tiza = require("tiza") aguja constante = requerir('aguja'); aguja.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', (err, res) => { si (err) regresa console.log('Error: ', err.message); constante {datos} = res.cuerpo datos.forEach(elemento => { console.log(`${chalk.amarillo.bold(item.rank)}.${chalk.green(item.category_name)}`); }) })
Aquí demostramos el uso de una función de devolución de llamada. Se puede ver que se devuelven err y res. Cuando tiene éxito, err es nulo. El cuerpo de la res devuelta después del éxito son los datos solicitados. Buen formato json.
Si desea utilizar Promise, puede escribir así:
aguja('get', 'https://api.juejin.cn/tag_api/v1/query_category_briefs') .entonces(función(res) { //... }) .catch(función(err) { //... });la biblioteca de solicitudes
superagent se lanzó bastante temprano, se remonta a 2011, pero es una biblioteca de solicitudes HTTP de cliente progresiva que admite muchas funciones avanzadas de cliente HTTP con el módulo Node.js con la misma API.
Podemos usar el siguiente comando para instalar superagent:
npm i -S superagent
Aquí hay un ejemplo simple de cómo obtenemos la clasificación de la sección Nuggets a través de superagent:
const chalk = require("chalk") const superagente = require('superagente'); superagent.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .entonces(res => { constante {datos} = JSON.parse(res.texto) datos.forEach(elemento => { console.log(`${chalk.amarillo.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(err => { console.log('Error: ', err.message); });
el uso actual del superagente es muy similar al de axios, pero usted mismo debe procesar los datos en formato json.
Como sugiere el nombre,es una biblioteca de solicitudes cuya API es consistente con window.fetch y también se basa en promesas. Ha sido muy popular recientemente, pero quizás el mayor problema es que hay una gran diferencia entre sus versiones v2 y v3. La v2 mantiene el estándar cjs, mientras que la v3 usa el método ejs, lo que puede causar algunos problemas después de la actualización. Para unificar este estándar, aquí se utiliza la versión 2.6.7 como versión de demostración.
Podemos usar el siguiente comando para instalar node-fetch:
npm i -S [email protected]
Aquí hay un ejemplo simple de cómo obtenemos la clasificación de la sección Nuggets a través de node-fetch:
const chalk = require("chalk") const fetch = require("nodo-fetch") buscar ('https://api.juejin.cn/tag_api/v1/query_category_briefs', { método: 'OBTENER' }) .entonces(async res => { let {datos} = esperar res.json() datos.forEach(elemento => { console.log(`${chalk.amarillo.bold(item.rank)}.${chalk.green(item.category_name)}`); }) }) .catch(err => { console.log('Error: ', err.message); });
se puede ver que se usa exactamente igual que window.fetch, sin ninguna presión de aprendizaje.
, echemos un vistazo al gráfico de tendencias de descarga de estas bibliotecas de solicitudes durante el año pasado:
Ahora podemos ver que node-fetch ha sido el más popular y Needlele el menos popular en términos de descargas durante el año pasado.
Estrellas | Versión | Desempaquetado Tamaño | Años de creación | |
---|---|---|---|---|
axios | 91,642 | 0.26.1 | 398 kB | 2014 |
obtuvo | 10,736 | 12.0.1 | 244 kB | 2014 |
aguja | 1,446 | 3.0.0 | 227 kB | 2012 |
superagent | 15,928 | 7.1.1 | 581 kB | 2011 |
node-fetch | 7 | , 4343.2.3 | 106 kB | 2015Aquí |
Nosotros Después de contar algunos otros datos de estas bibliotecas, se puede decir que la cantidad de estrellas de axios es incomparable, superando con creces la de varias otras bibliotecas.
Estas bibliotecas de solicitudes hacen lo mismo y pueden iniciar solicitudes HTTP. Quizás los métodos de escritura sean ligeramente diferentes, pero todos los caminos conducen a Roma. Personalmente, puede deberse a que a menudo escribo en el lado del navegador, por lo que soy un usuario leal de axios, ya sea que esté practicando o desarrollando axios, es mi primera opción. Por supuesto, la búsqueda de nodos también recibe cada vez más. Atención, y el paquete también es muy pequeño. Se usa a menudo durante la práctica, pero la API aún no es tan conveniente de usar como axios.
De hecho, hay dos bibliotecas de solicitudes HTTP famosas que no se mencionan en este artículo:
una es ky.js, que es una biblioteca de solicitudes de estilo de recuperación muy pequeña y poderosa. Está diseñada principalmente para navegadores modernos y deno, por lo que no participaré. En él por el momento, los estudiantes interesados pueden explorar por su cuenta.
El otro es request.js. La razón por la que no se menciona es que quedó completamente obsoleto en 2020. Si lo ha usado, puede reemplazar la solicitud en el proyecto con otros métodos.
Este artículo es una reproducción de: https://juejin.cn/post/7074749427637813284
Autor: jsmask