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

274
Vistas
Intentando registrar la respuesta JSON de la API REST en JavaScript usando Fetch

Tengo un pequeño guión que he elaborado. El script hace lo siguiente:

  • Define varias variables dentro de una matriz

  • Pasa esos valores a una API

  • La API debe devolver un token de acceso

     const fetch = require('node-fetch'); var orgInfo = { client_id: 'idgoeshere', client_secret: 'secretgoeshere', username: 'usernamegoeshere', password: 'passwordgoeshere', grant_type: 'granttypegoeshere' }; fetch('https://urlgoeshere', { method: "GET", body: JSON.stringify(orgInfo), headers: { "Content-Type": "application/json" }, credentials: "include" }).then(function(response) { response.access_token response.bearer response.expires_in response.scope return repsonse.text() }, function(error) { error.message }) console.log(orgInfo); console.log(response.access_token);

Cuando registro orgInfo, obtengo el siguiente resultado:

 { client_id: 'idgoeshere', client_secret: 'secretgoeshere', username: 'usernamegoeshere', password: 'passwordgoeshere', grant_type: 'granttypegoeshere' }

Cuando intento registrar response.access_token, aparece un error de referencia: la respuesta no está definida

Mis preguntas son:

  • ¿Es necesario definir la respuesta? Obviamente, me están gritando porque no lo es.
  • ¿Hay alguna manera de ver si obtengo algo de la API de forma automática?

No estoy buscando a alguien que me dé una respuesta con cuchara, sino que simplemente estoy buscando un empujón en la dirección correcta. Eso sería estelar.

Gracias

ACTUALIZAR

Así que esto es lo que tengo:

 const fetch = require('node-fetch'); const orgInfo = { client_id: ' ', client_secret: ' ', username: ' ', password: ' ', grant_type: ' ' }; (async() => { const response = await fetch('https:// ', { method: "GET", body: JSON.stringify(orgInfo), headers: { "Content-Type": "application/json" } }); const data = await response.json(); console.log(data) })

Esto no devuelve errores cuando se ejecuta, pero tampoco devuelve el valor de los datos.

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

0

devolver repsonse.text() debe ser ----> devolver respuesta.text()

De acuerdo con Fetch Documentation

  • "La interfaz de respuesta de Fetch API representa la respuesta a una solicitud. Puede crear un nuevo objeto de respuesta utilizando el constructor Response.Response(), pero es más probable que encuentre un objeto de respuesta devuelto como resultado de otra operación de API —por ejemplo, un trabajador de servicio Fetchevent.respondWith, o un simple fetch().

Para su pregunta "¿Hay alguna manera de ver si obtengo algo de la API de forma automática?"

  • Puede intentar usar console.log(response.status); que le dará el código de estado de su solicitud. Estos códigos se pueden encontrar AQUÍ . Y un ejemplo de esto se utiliza AQUÍ .

  • Recomiendo encarecidamente intentar usar Postman o Thunder-client si puede, lo que simplifica todo esto y le brinda todo lo que necesita saber sobre la respuesta. Es muy útil para probar las llamadas a la API y saber exactamente qué está pasando. También tienes la posibilidad de ver tu llamada escrita en otros idiomas automáticamente.

about 4 years ago · Juan Pablo Isaza Denunciar

0

const fetch = require('node-fetch'); var orgInfo = { client_id: 'idgoeshere', client_secret: 'secretgoeshere', username: 'usernamegoeshere', password: 'passwordgoeshere', grant_type: 'granttypegoeshere' }; fetch('https://urlgoeshere', { method: "GET", body: JSON.stringify(orgInfo), headers: { "Content-Type": "application/json" }, credentials: "include" }).then(function(response) { response.access_token response.bearer response.expires_in response.scope console.log(response.access_token); return repsonse.text() }, function(error) { error.message }) console.log(orgInfo);

la respuesta está dentro del alcance de la función llamada por el método entonces, por lo que solo es accesible dentro de esta función

about 4 years ago · Juan Pablo Isaza Denunciar

0

fetch devuelve un objeto Promise .

Una Promise representa la eventual finalización (o falla) de una operación asincrónica y su valor resultante. Eso significa que solo se garantiza que response.access_token tenga un valor (si lo hay) dentro del bloque .then , ya que la response solo se evalúa cuando se ha cumplido la promesa.

La razón por la que no obtiene nada en la consola es que está tratando de acceder a access_token cuando no se garantiza que tenga un valor (y, por lo tanto, console.log no genera nada, no hay nada que generar ).


Para solucionar esto, debe acceder a la propiedad access_token cuando tenga la garantía de obtener una respuesta.

Eso es después de que se haya cumplido la promesa, así que:

  1. Mueva el console.log(response.access_token); dentro de la cláusula .then

O una solución más limpia y moderna sería:

  1. Use await (azúcar sintáctico equivalente)

NB El objetoResponse es la representación de toda la respuesta HTTP.

Está utilizando response.text() que analizará el cuerpo de la respuesta como una cadena , no como un objeto JS con propiedades .

Supongo que desea analizar el contenido del cuerpo del objeto de Response como JSON en un objeto JS. En ese caso, use el método json() que luego devolverá una segunda promesa que se resuelve con el objeto JavaScript obtenido del análisis del cuerpo de la respuesta.

El resultado debe tener la propiedad access_token que desea (considerando que el extremo de la API lo devuelve).

Esto debería funcionar:

 const response = await fetch('https://urlgoeshere', { method: "GET", body: JSON.stringify(orgInfo), headers: { "Content-Type": "application/json" }; const data = await response.json(); console.log(data.access_token); console.log(data.bearer); console.log(data.expires_in); console.log(data.scope); ...
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