Este hands-on vai ser complementar a outro módulo que eu já mostrei por aqui, o Request. O módulo de hoje é o Request-Promise, que é basicamente o Resquest 'Promisificado', então ele retorna uma Promise e assim fica muito mais fácil de fazer tratamentos de várias requisições HTTP, porque podemos utilizar, por exemplo, tanto o Generator com o Wild ou dentro do Async/await, que é uma maneira mais moderna de se fazer.
Então vamos colocar a mão na massa. Primeiro vou instalar as duas dependências que precisamos. Uma coisa importante: o Request promise depende do Request, então temos que adicionar os dois:
yarn request
yarn request promise
Em seguida, basta simplesmente importar ele. A assinatura é exatamente a mesma do Request, então eu posso simplesmente trocar para o Request-Promise:
const request = require('request-promise')
request('https://httpbin.org/ip').then((res) => console.log(res))
Então a versão com promise eu não tenho um callback, e sim um then com catch para tratar. Ao rodar, perceba que ele vai bater no servidor e retornar o IP.
Outra vantagem que temos é que podemos fazer o seguinte:
const pegarIp = async () => {
const ip = await request('https://httpbin.org/ip')
console.log(ip)
}
pegarIp()
Perceba que o código ficou muito mais simples, conseguimos fazer a mesma operação, porém trocando a Promise por Async/await. Outra coisa que poderíamos fazer é pegar esse IP e enviar de volta:
const pegarIp = async () => {
const ip = await request('https://httpbin.org/ip')
const ipPost = await request({
method: 'POST',
json: ip,
uri: 'https://httpbin.org/post'
})
console.log(ipPost)
}
pegarIp()
Ele já vai mostrar o data como o IP que eu recebi.
O interessante é que poderiamos criar um Request-Promise se a gente quisesse, não é tão complicado, podemos importar ele direto e, utilizando com Async/await, podemos fazer várias operações de rede. Um detalhe importante, como sempre falo, o Async await não vai transformar esse código em síncrono, ele continua sendo assíncrono e tendo as mesmas vantagens.
Confira o video:
Curta o
DevPleno no Facebook,
inscreva-se no canal e cadastre seu e-mail para não perder nenhuma novidade. Deixe suas dúvidas e sugestões nos comentários. Abraço!