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

288
Visualizações
Pasar parámetros desde el frontend para usarlos en el backend

Tengo una interfaz (html) y un backend Node.js (express). Quiero hacer una solicitud a una API de terceros, pero tengo problemas de cors.

Ahora quiero poder tomar el valor de una entrada y agregarlo a mi URL de backend cuando lo solicite en el frontend (por ejemplo localbackend:3000/${input_value} ), luego use el parámetro pasado ( input_value ) en mi backend para formar el api url que necesito para hacer una llamada a la API externa.

Un poco de código:

índice.html

 <input type="text" id="text">

índice.js

 document.getElementById("send").addEventListener("click", async (e) => { e.preventDefault(); var message = document.getElementById("text").value; if (message == undefined || message == "") { } else { let response = ""; await fetch(`http://localhost:3000/${message}`) .then((data) => data.json()) .then((data) => response = data) .catch((error) => console.error(error)); .... then response to be appended to another div...

servidor.js

 app.get("/", (req, res) => { axios .request( `http://someexternalserver/get?uid="simon"&msg=${where_i_need_the_input}` ) .then(function (response) { res.send(JSON.stringify(response.data)); }) .catch(function (error) { console.error(error); }); });

Manualmente, puedo probar con éxito la API externa, pero quiero que esto se haga dinámicamente.

Siéntase libre de compartir una mejor solución o simplemente cómo hacer que esto funcione. Sin marcos FE, por favor.

Lo intenté:

El proxy cors-anywhere de Rob ( https://cors-anywhere.herokuapp.com/ ) que la API ha restringido.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Algo parece estar mal. Su aplicación frontend no parece estar realizando una solicitud directa a la API de terceros, pero el mensaje de error indica lo contrario.

Así es como configuraría las cosas con su aplicación Express actuando como un proxy entre su interfaz y el tercero...

  1. Habilite cors en su aplicación Express si aún no lo ha hecho

     const cors = require("cors"); app.use(cors());

    Puede ajustar esto más tarde para permitir solo orígenes específicos si lo desea. Ver cors-opciones de configuración .

  2. Pase el message como parámetro de consulta (GET) o parámetro de cuerpo (POST). Un ejemplo de solicitud GET se vería así

     document.getElementById("send").addEventListener("click", async (e) => { e.preventDefault(); const message = document.getElementById("text").value; if (message) { // this will never be `undefined` // create query parameters const params = new URLSearchParams({ message }); // send the request const res = await fetch(`http://localhost:3000/?${params}`); if (!res.ok) { throw new Error(`${res.status}: ${await res.text()}`) ; } const data = await res.json(); // append data to another div... } });
  3. En su backend, capture el parámetro del message y reenvíelo a la API de terceros

     app.get("/", async (req, res) => { const { data } = await axios.get("http://someexternalserver/get", { params { uid: "simon", // or '"simon"' if you actually need those quotes msg: req.query.messsage // get the query parameter }, headers: { "x-forwarded-for": req.ip // optional though the API might require it } }); res.json(data); });

    No se trague ningún error en sus controladores de ruta Express. Siempre debe dejar que Express los maneje o llamar explícitamente a res.send() con un estado de error.

over 4 years ago · Santiago Trujillo 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