es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo utilizar una API en Express

Estoy intentando utilizar la API de aquí http://www.postalpincode.in/Api-Details

const express = require('express')
const app = express()
const https = require("https");
const bodyParser = require("body-parser")
const port = 3000
app.use(bodyParser.urlencoded({ extended: true }));

app.get('/', (req, res) => res.sendFile(__dirname + "/index.html"))
app.post("/", (req, res) => {
    const query = req.body.cityData;  // obtiene la entrada del formulario
    // const dataType = req.body.dataType;
    const url = <code>https://api.postalpincode.in/pincode/586101</code>;
    https.get(url, (response) => {
      response.on("data", (data) => {
        const pinData = data();  // convierte otros formatos en json

        const place = pinData.0.PostOffice[0].Name; //<== en esta línea se muestra error por el 0 después de pinData
        res.set("Content-Type", "text/html");
        res.send(`place:${place}
          `);
      });
    });

});

app.listen(port, () => console.log(`¡Aplicación de ejemplo escuchando en el puerto ${port}!`))
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Pregunta

    ¿Cuál es el propósito de este código? ¿Por qué no está funcionando correctamente y qué error específico se está encontrando?

    Respuesta

    El propósito de este código es crear una aplicación web simple que tome el nombre de una ciudad ingresado por el usuario y devuelva el código postal correspondiente para esa ciudad utilizando una API proporcionada por http://www.postalpincode.in.

    El código está encontrando un error específicamente en esta línea: const place = pinData.0.PostOffice[0].Name;. El problema es que el 0 se está utilizando como nombre de propiedad, lo cual no es una sintaxis válida en JavaScript. Para acceder al primer elemento de un array o de un objeto literal, se deben utilizar corchetes en lugar de la notación de punto.

    Por lo tanto, para solucionar este error, la línea debería actualizarse a: const place = pinData[0].PostOffice[0].Name;. De esta manera, el código puede acceder al primer elemento del array pinData y luego acceder a la propiedad PostOffice de ese elemento para obtener el valor deseado de la propiedad Name.

Comments are closed.