
Este artigo apresenta 6 métodos diferentes para iniciar solicitações HTTP em nodejs. Aqui concluiremos o uso de cada método diferente solicitando掘金社区的板块分类接口como demonstração, é claro, para imprimir os dados obtidos de forma mais clara. , precisamos instalar chalk库com antecedência para adicionar cor aos dados impressos. Ok, estamos prestes a começar ~
O Node.js vem com o módulo https na biblioteca padrão, então você não precisa. preciso disso Introduza qualquer biblioteca para iniciar solicitações, porque o próprio node.js pode completá-la e é mais do que suficiente para lidar com algumas solicitações de dados simples.
const giz = require("giz")
const https = requer('https')
https.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', res => {
deixe lista = [];
res.on('dados', pedaço => {
lista.push(pedaço);
});
res.on('fim', () => {
const {dados} = JSON.parse(Buffer.concat(list).toString());
dados.forEach(item => {
console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
});
}).on('erro', err => {
console.log('Erro: ', err.mensagem);
}); É um pouco complicado em estrutura, porque precisamos criar uma lista de array vazia para armazenar o bloco de dados da solicitação e, depois que a solicitação for concluída, precisamos processar os dados por meio do Buffer e analisá-los no formato json. .

acredita que os amigos front-end estão familiarizados com axios. É uma biblioteca de solicitações Promise muito popular. Pode ser usado tanto no navegador quanto no cliente e, como todos sabemos, também possui funções muito convenientes, como interceptadores e conversão automática de dados para json.
Podemos usar o seguinte comando para instalar axios:
npm i -S axios
Aqui está um exemplo simples de como obtemos a classificação da seção Nuggets através de axios:
const giz = require("chalk")
const axios = require('axios');
axios.get('https://api.juejin.cn/tag_api/v1/query_category_briefs')
.então(res => {
const {dados} = res.dados
dados.forEach(item => {
console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
})
.catch(err => {
console.log('Erro: ', err.mensagem);
}); Aqui, o axios usa diretamente a solicitação get para solicitar a interface. A estrutura também pode estar na forma de promessa, e os dados são analisados automaticamente em json para você, o que pode ser considerado muito simples e conveniente.

afirma ser "uma biblioteca de solicitação HTTP Node.js poderosa e amigável. A facilidade de uso reside no uso de API estilo Promise e configuração de processamento JOSN, e algumas como suporte HTTP2, API de paginação e cache de RFC". e outros recursos não estão disponíveis na maioria das bibliotecas de solicitação.
Podemos usar o seguinte comando para instalar o got:
npm i -S [email protected]
Aqui está um exemplo simples de como obtemos a classificação da seção Nuggets através do got:
const giz = require("chalk")
const obtido = require('obtido');
got.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', {
tipo de resposta: 'json'
})
.então(res => {
const {dados} = res.body
dados.forEach(item => {
console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
})
.catch(err => {
console.log('Erro: ', err.mensagem);
}); Aqui primeiro precisamos configurar a interface de solicitação com {responseType: 'json'} , e então os dados retornados podem ser obtidos no corpo, que também é muito fácil de usar.

Needle é uma biblioteca de solicitação relativamente simples e compacta. Pode ser na forma de promessa ou função de retorno de chamada. Além disso, seu valor de retorno converterá automaticamente XML e JSON, o que também é muito útil. . de conveniência.
Podemos usar o seguinte comando para instalar o Needle:
npm i -S Needle
Aqui está um exemplo simples de como obtemos a classificação da seção Nuggets através do Needle:
const giz = require("chalk")
const agulha = require('agulha');
agulha.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', (err, res) => {
if (err) return console.log('Erro: ', err.message);
const {dados} = res.body
dados.forEach(item => {
console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
}) Aqui demonstramos o uso de uma função de retorno de chamada. Pode-se ver que err e res retornados. Quando bem-sucedido, err é nulo. Bom formato json.

Se quiser usar o Promise, você pode escrever assim:
Needle('get', 'https://api.juejin.cn/tag_api/v1/query_category_briefs')
.então(função(res) {
// ...
})
.catch(função(erro) {
// ...
}); A biblioteca de solicitação superagent foi lançada bem cedo, datando de 2011, mas é uma biblioteca de solicitação HTTP de cliente progressiva que suporta muitas funções avançadas de cliente HTTP com o módulo Node.js com a mesma API.
Podemos usar o seguinte comando para instalar o superagente:
npm i -S superagent
Aqui está um exemplo simples de como obtemos a classificação da seção Nuggets por meio do superagente:
const giz = require("chalk")
const superagente = require('superagente');
superagent.get('https://api.juejin.cn/tag_api/v1/query_category_briefs')
.então(res => {
const {dados} = JSON.parse(res.text)
dados.forEach(item => {
console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
})
.catch(err => {
console.log('Erro: ', err.mensagem);
}); O uso atual do superagente é muito semelhante ao axios, mas você mesmo precisa processar os dados no formato json.

é uma biblioteca de solicitações cuja API é consistente com window.fetch e também baseada em promessas. Tornou-se muito popular recentemente, mas talvez o maior problema seja que há uma grande diferença entre suas versões v2 e v3. A v2 mantém o padrão cjs, enquanto a v3 usa o método ejs, o que pode causar alguns problemas após a atualização, portanto, em. para unificar este padrão, a versão 2.6.7 é usada aqui como versão de demonstração.
Podemos usar o seguinte comando para instalar o node-fetch:
npm i -S [email protected]
Aqui está um exemplo simples de como obtemos a classificação da seção Nuggets por meio do node-fetch:
const giz = require("chalk")
const busca = require("busca de nó")
fetch('https://api.juejin.cn/tag_api/v1/query_category_briefs', {
método: 'GET'
})
.then(ress assíncrona => {
deixe {dados} = aguardar res.json()
dados.forEach(item => {
console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);
})
})
.catch(err => {
console.log('Erro: ', err.mensagem);
}); Percebe-se que é usado exatamente da mesma forma que window.fetch, sem qualquer pressão de aprendizado.

, vamos dar uma olhada no gráfico de tendências de download dessas bibliotecas de solicitação no ano passado:

Agora podemos ver que o node-fetch foi o mais popular e o Needlele o menos popular em termos de downloads no ano passado.
| Estrelas | Versão | Descompactado Tamanho | Criado Anos | |
|---|---|---|---|---|
| axios | 91.642 | 0,26.1 | 398 kB | 2014 |
| obteve | 10.736 | 12.0.1 | 244 kB | 2014 |
| agulha | 1.446 | 3.0.0 | 227 kB | 2012 |
| superagente | 15.928 | 7.1.1 | 581 kB | 2011 |
| node-fetch | 7 | , 4343.2.3 | 106 kB | 2015Aqui |
Nós Depois de contar alguns outros dados dessas bibliotecas, pode-se dizer que o número de estrelas dos axios é incomparável, excedendo em muito o de várias outras bibliotecas.
Todas essas bibliotecas de solicitações fazem a mesma coisa e podem iniciar solicitações HTTP. Talvez os métodos de escrita sejam um pouco diferentes, mas todos os caminhos levam a Roma. Pessoalmente, pode ser porque escrevo frequentemente no lado do navegador, por isso sou um usuário fiel de axios. Seja praticando ou desenvolvendo axios, é claro que a busca de nó também está recebendo cada vez mais. atenção, e o pacote também é muito pequeno. É frequentemente usado durante a prática, mas a API ainda não é tão conveniente de usar quanto o axios.
Na verdade, existem duas bibliotecas de solicitação HTTP famosas não mencionadas neste artigo:
uma é ky.js, que é uma biblioteca de solicitação de estilo de busca muito pequena e poderosa. Ela é construída principalmente para navegadores deno e modernos, então não participarei. por enquanto. Discussão, os alunos interessados podem explorar por conta própria.
O outro é request.js. A razão pela qual não é mencionado é que ele foi completamente obsoleto em 2020. Se você o usou, pode substituir a solicitação no projeto por outros métodos.

Este artigo foi reproduzido de: https://juejin.cn/post/7074749427637813284
Autor: jsmask