Domaći zadatak br.2

Ovaj domaći zadatak ima za cilj proveru da li ste dobro razumeli mehanizam funkcionisanja web aplikacija koji je prikazan na predavanjima Web aplikacije.

Python program koji sledi, koristi biblioteku requests za pristup na dva API servisa:

Geonames API servis nam omogućava da dobijemo geografsku širinu (latitudu) i geografsku dužinu (longitudu) za svako mesto na planeti, dok nam sunrise-sunset API daje podatke o izlasku i zalasku sunca, dužini trajanja dana itd. za svaku geografsku poziciju na planeti na osnovu njene latitude i longitude

Python program za korišćenje geonames i sunrise-sunset api servisa


    import requests 

    datum = input('Datum (gggg-mm-dd): ')
    mesto = input("Unesite naziv mesta: ")

    # Geonames api servis
    parametri = {'name': mesto, 'username': 'milan.popovic'}   # podaci za upit
    r = requests.get('http://api.geonames.org/searchJSON', params=parametri) # upit

    rezultat = dict(r.json()) # konvertovanje odgovora rp u rečnik (dictionary)
    longituda = rezultat['geonames'][0]['lng']
    latituda = rezultat['geonames'][0]['lat']
    naziv_mesta = rezultat['geonames'][0]['name']
    zemlja = rezultat['geonames'][0]['countryName']
    broj_stanovnika = rezultat['geonames'][0]['population']

    #Sunrise-sunset api servis
    parametri = {'lat': latituda, 'lng': longituda, 'date':datum} # podaci za upit
    rp = requests.get('https://api.sunrise-sunset.org/json', params=parametri) # upit

    rezultat = dict(rp.json()) # konvertovanje odgovora rp u rečnik (dictionary)
    izlazak_sunca = rezultat['results']['sunrise']
    zalazak_sunca = rezultat['results']['sunset']
    trajanje_dana = rezultat['results']['day_length']

    #Prikaz rezultata
    print("*"*80)
    print("Mesto:",naziv_mesta,"Drzava:",zemlja,"Broj stanovnika:",broj_stanovnika)
    print('Izlazak sunca',izlazak_sunca)
    print('Zalazak sunca',zalazak_sunca)
    print('Trajanje dana',trajanje_dana)
    print("*"*80)

O biblioteci requests možete da saznate više na adresi Requests: HTTP for Humans

Zadatak

Vaš zadatak je da prilagodite gornji program za izradu jedne web aplikacije koja će na index.html stranici imati formu za unos datuma i naziva mesta.

Slanjem serveru podataka iz forme, Ajax zahtevom, po nekoj putanji, treba da se izvrši python kod kojim se pozivaju gornji servisi. Kada program od servisa dobije tražene podatke, iste vraća kao odgovor na Ajax zahtev.

Kada Ajax primi odgovor treba da ga prosledi javascript funkciji (callback funkciji) koja će taj odgovor prikazati na ekranu u pogodnom obliku.

Vaše rešenje treba da se sastoji od app.py, index.html, app.css i app.js fajlova koje treba da sačuvate u domaci2 folderu na vašem Cloud9 workspace-u folderu domaci.

Ako imate pitanja u vezi sa ovim zadatkom javite mi na mejl: praktikum@mef-lab.com