Soy totalmente nuevo en el back-end, ahora mismo estoy aprendiendo Front-End pero decidí crear mi propio servidor con Node.js. Instalé Express, Cors y Axios. Parece que está funcionando ya que puedo ver la respuesta de la API en mi terminal, pero no puedo hacer una solicitud GET para encender mi máquina.
¿Cómo puedo llamar al método GET? Ahora los datos de la API se imprimen solo en la terminal, en el back-end aparece este error:
**OBTENGA http://localhost:3002/ 404 (No encontrado)
Mi código de fondo:
const express = require('express'); const bodyParser = require('body-parser'); const router = require('express').Router(); var cors = require('cors'); const axios = require('axios').default; const app = express(); app.use(cors()) axios.get('https://rickandmortyapi.com/api/character').then(res => { console.log(res.data); }); app.use('/', router); app.use(bodyParser.json()); app.listen(3002, () => { console.log(`Port is dummy. At least it started.`); });Aquí cómo puedes hacerlo:
const express = require('express'); const bodyParser = require('body-parser'); const router = require('express').Router(); var cors = require('cors'); const axios = require('axios').default; const app = express(); app.use(cors()) let data; axios.get('https://rickandmortyapi.com/api/character').then(res => { data = res.data; }); router.get('/', (req, res) => { res.send(data); }); app.use('/', router); app.use(bodyParser.json()); app.listen(3002, () => { console.log(`Port is dummy. At least it started.`); }); necesita llamar a los métodos del enrutador, como .get() para definir sus rutas, cuando hace app.use('/', router) solo usará su enrutador, pero no agregará una nueva ruta a su enrutador, y como es un enrutador vacío obtienes un 404
en su caso app.use('/', router); es lo mismo que app.use(router); , no necesita especificarlo cuando es / , solo es útil para cosas como /clients cuando desea prefijar sus rutas
Debe especificar el punto final de get en su aplicación.
Puedes hacerlo usando el Express Router:
const router = require('express').Router(); router.get('/', async (req, res) => { try { const { data } = axios.get('https://rickandmortyapi.com/api/character'); res.status(200).json(data) } catch (err) { res.status(500).json({ message: 'Server error' }) } }); app.use('/', router);O usando solo Express:
app.get('/', async (req, res) => { try { const { data } = axios.get('https://rickandmortyapi.com/api/character'); res.status(200).json(data) } catch (err) { res.status(500).json({ message: 'Server error' }) } }) Finalmente, tenga en cuenta que body-parser está en desuso, debe usar:
const express = require('express');; const app = express(); var cors = require('cors'); app.use(cors()); app.use(express.json()); ...