Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

234
Views
Cómo obtener datos Json de diferentes sitios

Entonces, digamos que tengo el directorio /api/cat/fact.js .
Quiero obtener datos JSON de catfact.ninja

La cuestión es que no puedo usar el paquete require() o request() , porque si usara require , diría que no se pudo encontrar el módulo ... , y si usé request one, en lugar de devolver los datos JSON que usted puede para ver en catfact.ninja , devuelve JSON sobre la API, como nombre de host , puerto , que no necesito

/API/api/cat/fact.js:

 const express = require('express'); const app = express.Router(); const request = require('request') app.use('', (req, res) => { const src = 'https://catfact.ninja/fact'; const facts = request({ uri: src, hostname: 'catfact.ninja', port: 443, path: '/fact', method: 'POST', json: 'fact' }, (error, response, body) => { if (error) console.log(error) console.log(body, '\n\n' + response.fact) }) console.log(facts); return res.jsonp(facts) }) module.exports = app;
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Estás devolviendo JSON en el lugar equivocado. Debe devolverse dentro de la función de devolución de llamada.

Aquí está la solución:

 const express = require('express'); const request = require('request-promise') const app = express(); app.use('', async (req, res) => { const src = 'https://catfact.ninja/fact'; try { const response = await request({ uri: src, port: 443, method: 'GET', json: true }) return res.jsonp(response) } catch (err) { return res.jsonp(err) } }) function startServer() { const port = 3000 app.listen(port, () => { console.info('Server is up on port ' + port) }) app.on('error', (err) => { console.error(err) process.exit(1) }) } startServer()

SUGERENCIA: sugiero usar el paquete request-promise npm en lugar del paquete request , ya que proporciona un enfoque de espera asincrónica, que es más limpio. De lo contrario, puede continuar usando la función de devolución de llamada como segundo parámetro de función de request() .

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!