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

157
Visualizações
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 Respostas
Responde à pergunta

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 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