Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.1K
Visualizações
Extraer datos de axios get request para renderizar usando EJS

Entonces, estoy tratando de extraer los datos de una API usando axios para renderizar en mi vista EJS:

 const axios = require('axios'); const express = require("express"); const bodyParser = require("body-parser"); const app = express(); app.set('view engine', 'ejs'); app.use(bodyParser.urlencoded({extended: true})); app.use(express.static("public")); app.get("/test", (req, res, next) => { let productApi = axios.get("https://swapi.dev/api/people/1") .then(response => res.json(response.data)) res.render('produtos2', {product: productApi}) })

pero recibo el error: Error [ERR_HTTP_HEADERS_SENT]: no se pueden establecer encabezados después de enviarlos al cliente

si lo uso asi:

 app.get("/test", (req, res, next) => { let productApi = axios.get("https://swapi.dev/api/people/1") .then(response => res.json(response.data)) })

devuelve los datos, pero no puedo representar la vista 'produtos2' usando EJS.

Mi código EJS:

 <%- include('partials/header') %> teste view <%= product[0] %> <%- include('partials/footer') %>
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

el problema es que mezclas res.render y res.json , y que node.js se ejecuta de forma asíncrona

por lo tanto, res.render se ejecuta antes de que se complete la solicitud de axios, envía un objeto de promesa, no datos, y cuando finaliza la solicitud, res.json provoca el error ERR_HTTP_HEADERS_SENT . Además, no necesita res.json en absoluto, solo pase los datos de la solicitud a la vista.

por lo tanto, debe procesar los datos después de que se realiza la solicitud

en su segundo fragmento de código, comenzó bien, allí es donde obtiene los datos, y luego necesita representar la vista, y en lugar de res.json , simplemente pasa los datos de solicitud:

 app.get("/test", (req, res, next) => { axios.get("https://swapi.dev/api/people/1") .then(response => { res.render('produtos2', {product: response.data }); }); });

o con async/await de uso común:

 app.get("/test", async (req, res, next) => { let productApi; try { productApi = await axios.get("https://swapi.dev/api/people/1") } catch(err) { console.error(err); return res.end('err'); } res.render('produtos2', {product: productApi.data }); });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda