Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

158
Vistas
Cómo hacer una llamada GET a api.github con el servidor Express

Estoy bloqueado desde hace 3 días e hice mi investigación en Internet. Aquí está el código.

api.js

 const express = require('express'); const router = express.Router(); var http = require('http'); var https = require("https"); router.get('/github', async function (req, res) { https.get('https://api.github.com/v3/users/tmtanzeel', function (apiRes) { apiRes.pipe(res); }).on('error', (e) => { console.error(e); res.status(500).send('Something went wrong'); }); });

Producción:

Solicitud prohibida por normas administrativas. Asegúrese de que su solicitud tenga un encabezado de agente de usuario ( http://developer.github.com/v3/#user-agent-required ). Consulte https://developer.github.com para conocer otras causas posibles.

Encontré algo útil aquí:

  1. En Node.js/Express, ¿cómo agrego automáticamente este encabezado a cada respuesta de "renderización"?
  2. Solicitar https://api.github.com/users (api) devuelve System.Net.HttpStatusCode.Forbidden IsSuccessStatusCode = false

Pero estos no fueron muy útiles.

Probé: res.setHeader("User-Agent", "My App"); pero no estoy muy seguro sobre el segundo argumento.

Servidor.js modificado

 const express = require('express'); const app = express(); const api = require('./routes/api'); const cors = require('cors'); app.use(cors()); app.use(function (req, res, next) { // Website you wish to allow to connect res.setHeader('Access-Control-Allow-Origin', '*'); // Request methods you wish to allow res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); // Request headers you wish to allow res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); // Set to true if you need the website to include cookies in the requests sent // to the API (eg in case you use sessions) res.setHeader('Access-Control-Allow-Credentials', true); res.setHeader("User-Agent", "My App"); // <-------------ADDED HEADER HERE // Pass to next layer of middleware next(); }); app.use('/api', api); app.get('/', function (req, res) { res.send('Server is up and running!'); }) app.listen(3000, function () { console.log('Server listening on 3000 port'); });

¿Alguna vez te has enfrentado a este tipo de problema? Por favor ayuda.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Está configurando encabezados para su respuesta. En su lugar, debe establecer encabezados en la llamada a la API que realice. Puede pasar el objeto de options al método http.get() y establecer encabezados allí.

 router.get('/github', async function (req, res) { const options = { hostname: 'api.github.com', path: '/v3/users/tmtanzeel', headers: { 'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1521.3 Safari/537.36' } } https.get(options, function (apiRes) { apiRes.pipe(res); }).on('error', (e) => { console.error(e); res.status(500).send('Something went wrong'); }); });

Vea esta respuesta sobre cómo configurar el encabezado del agente de usuario de github:

https://stackoverflow.com/a/16954033/4185234

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda