Application Programming Interface (API) Problem:

I work with js node, express, request and ejs. The following code works, but the JSON data is not updated. If I browse the raw JSON URL, I do not get the same data as displayed in my request.

app.js file :

var express = required (express) ;
var app = express() ;
var application = required (application) ;

app.set(view engine, ejs) ;
app.use(express.static(__dirname + /public)) ;

app.get(/, function(req, res){const weatherURL = https://api.aerisapi.com/forecasts/:auto?&format=json&limit=1&client_id= + apiId + &client_secret= + apiSecret;request(weatherURL, function(error, response, body){let weather_json = JSON.parse(body);const weather = {forecast: weather_json.response[0].periods[0].weather,temp: weather_json.response[0].periods[0].feelslikeF,icon: weather_json.response[0].periods[0].icon};res.render(index, { again: weather}))

app.listen(process.env.PORT, process.env.IP, function(){
console.log(App started!);
}) ;

I get a partly cloudy sky with isolated thunderstorms at 65° in my application when the data should show a partly cloudy sky at 62°.

Maybe JSON’s stuck in the cache?

JSON from the url:

Success:true,error:null,response:-83,814,lat:35.341},interval:daynight,periods:[{timestamp:1538650800,validTime:2018-10-04T07:00:00-04:00,dateTimeISO:2018-10-04T07:00:00-04:00,maxTempC:29,maxTempF:85,minTempC:null,minTempF:null,avgTempC:25, avgTempF:77, tempC:null, tempF:null, pop:7, precipMM:0, precipIN:0, iceaccumumMM:0, iceaccumIN:0, maxHumidity:92, minHumidity:60, humidity:70, uvi:7, pressureMB:1019, pressureIN:30.09,sky:43,snowCM:0,snowIN:0,feelslikeC:17,feelslikeF:62,minFeelslikeC:17,minFeelslikeF:62,maxFeelslikeC:31,maxFeelslikeF:88,avgFeelslikeC:26,avgFeelslikeF :79,dewpointC:17,dewpointF:62,maxDewpointC:20,maxDewpointF:68,minDewpointC:17,minDewpointF:62,avgDewpointC:19,avgDewpointF:66,windDirDEG:150,windDirDir :SSE, windDirMaxDEG: 290, windDirMax: WNW, windDirMinDEG: 280, windDirMin: W, windGustKTS:6, windGustKPH:11, windGustMPH:7, windSpeedKTS:2, windSpeedKPH:4, windSpeedMPH:3, windSpeedMaxKTS: 4, windSpeedMaxKPH:8, windSpeedMaxMPH:5, windSpeedMinKTS:1, windSpeedMinKPH:2, windSpeedMinMPH:1, windDir80mDEG:224, windDir80m: SW,windDirMax80mDEG : 290,windDirMax80m : WNW,windDirMin80mDEG : 280,windDirMin80m : W,windGust80mKTS:5,windGust80mKPH:8,windGust80mMPH:5,windSpeed80mKTS:4,windSpeed80mKPH:7,windSpeed80mMPH:4,windSpeedMax80mKTS:5,windSpeedMax80mKPH: 8,windSpeedMax80mMPH:5,windSpeedMin80mKTS:2,windSpeedMin80mKPH:3,windSpeedMin80mMPH:2,weather:partly cloudy,weatherCoded: [{time stamp:1538650800,wx:PA::F,dateTimeISO:2018-10-04T07:00-04:00}],weatherPrimary:partly cloudy,weatherPrimaryCode::SC,cloudsCoded:SC,icon:cloudy.png,isDay:true}],profile:{tz:America/New_York}]}.

How do you solve the API problem?

Solution 1:

If you think the data is cached, try adding a time stamp to the query parameters. Something like this:

const weatherURL = https://api.aerisapi.com/forecasts/:auto?&format=json&limit=1&client_id= + apiId + &client_secret= + apiSecret + &t= + Date.now() ;

Solution 2:

I’m trying to reproduce your problem, but I haven’t been able to find a match between the raw json and the data displayed in the views.

Give here a description of the image

Could it have something to do with the ejs cache, have you tried adding this line?

app.disable (view the cache) ;

Good luck!

weather app using node js,node js weather-app github,node js website example,express js,node js sample project download,building a website with node js and express,google weather api javascript,javascript weather app tutorial,weather-js,php weather api,build a simple weather app,how to make a weather app using api,weather forecast javascript,weather api tutorial,openweathermap api,npm weather api