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

185
Visualizações
¿Cómo puedo "encapsular" este código en un módulo para que pueda volverse reutilizable?

Tengo este fragmento de Node.JS y me gustaría escribirlo como un módulo, para poder usar recaptcha en diferentes partes de mi sistema.

Así es como se ve actualmente:

 app.post('/register_user', (req, res) => { const secret_key = process.env.RECAPTCHA_SECRET; const token = req.body.recaptcha; const url = `https://www.google.com/recaptcha/api/siteverify?secret=${secret_key}&response=${token}`; fetch(url, { method: "post",}) .then((response) => response.json()) .then((google_response) => { if (google_response.success == true) { res.format({'text/html': () => res.redirect(303, '/register'),}) } else { return res.send({ response: "Failed" }); } }) .catch((error) => { return res.json({ error }); }); })

He intentado escribir el siguiente módulo que funciona absolutamente bien, pero no tengo ni idea de cómo llamarlo desde app.post, ya que siempre obtengo un valor indefinido como retorno:

 import fetch from 'node-fetch'; export function fetch_out(url, timeout = 7000) { return Promise.race([ fetch(url), new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), timeout) ) ]); } export async function checkRecaptcha(token, secret_key){ const url = "https://www.google.com/recaptcha/api/siteverify?secret=" + secret_key + "&response=" + token; try{ const response = await fetch_out(url, 1000); const google_response = await response.json(); }catch(error){ return error; } return google_response; }

¡Cualquier ayuda sería apreciada! ¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede hacer que este método sea reutilizable eliminando las acciones del marco que deben ocurrir y solo regresar si la validación fue exitosa o no. De esta forma, será reutilizable en otro proyecto que no utilice un framework específico.

Módulo de ejemplo;

 export async function checkRecaptcha(token, secret_key) { const url = `https://www.google.com/recaptcha/api/siteverify?secret=${secret_key}&response=${token}`; const response = await fetch(url, { method: "post",}); if (!response.ok) return false; const json = await response.json(); if (!json.success) return false; return true; }

Uso:

 import { checkRecaptcha } from "./some-file-name"; app.post('/register_user', async (req, res) => { const isHuman = await checkRecaptcha(req.body.recaptcha, process.env.RECAPTCHA_SECRET); if (!isHuman) { return res.send({ response: "Failed" }); } return res.format({'text/html': () => res.redirect(303, '/register'),}); });

Si desea llamar específicamente a una acción después de la validación, también puede usar devoluciones de llamada exitosas y de error.

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