Dibuat oleh Antonio Setya (13516002)
API (Application Programming Interface) adalah sekumpulan protokol, subroutine, dan tools untuk membangun sebuah aplikasi. Dalam kata lain, API adalah sekumpulan cara untuk melakukan komunikasi dengan komponen software lainnya. API dibuat oleh pengembang software untuk memudahkan pengembangan aplikasi dan memudahkan komunikasi antar aplikasi. Dengan adanya API, kita dapat menggunakan sebuah fitur dari yang diperlukan suatu software lain tanpa perlu mengetahui bagaimana software tersebut "menghasilkan" fitur tersebut.
API sendiri datang dalam berbagai bentuk. Ada API sebagai library atau framework dari sebuah bahasa pemrograman. (seperti C++ Standard Template Library atau Java Collections Framework). Ada pula API untuk operating system. API ini memberikan perantara antara aplikasi dan operating system dimana aplikasi berjalan. Terakhir, ada Web API, yang bekerja melalui jaringan komputer (seperti OpenWeather ini).
OpenWeather API adalah sebuah interface yang menyediakan data cuaca dari berbagai kota di dunia. API ini berada di api.openweathermap.org. Untuk menggunakan API dari OpenWeather, pengguna perlu mendaftarkan diri terlebih dahulu di website tersebut dan mendapatkan API key.
Untuk mendapatkan data cuaca dari suatu kota, kita lakukan GET request ke
api.openweathermap.org/data/2.5/weather?q={nama_kota}&appid={API_key}
,
dengan {nama_kota} diganti dengan nama kota yang diiginkan, dan {API_key} diganti dengan API key yang kita dapatkan saat melakukan registrasi. Melakukan request dengan nama kota dapat menimbulkan ambiguitas, karena bisa saja ada dua kota dengan nama yang mirip/sama. Maka dari itu, OpenWeather menyarankan untuk melakukan request dengan ID dari kota tersebut. Request tersebut dapat dilakukan ke
api.openweathermap.org/data/2.5/weather?id={id_kota}&appid={API_key}
,
dengan {id_kota} diganti dengan ID dari kota yang diinginkan. ID kota-kota tersebut dapat diunduh disini.
API dari OpenWeather dapat menyediakan data dalam format JSON atau XML. Dalam program ini, format data yang akan digunakan adalah JSON. Diambil dari dokumentasi API, berikut adalah contoh data yang dikirim oleh OpenWeather:
{"coord":
{"lon":145.77,"lat":-16.92},
"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],
"base":"cmc stations",
"main":{"temp":293.25,"pressure":1019,"humidity":83,"temp_min":289.82,"temp_max":295.37},
"wind":{"speed":5.1,"deg":150},
"clouds":{"all":75},
"rain":{"3h":3},
"dt":1435658272,
"sys":{"type":1,"id":8166,"message":0.0166,"country":"AU","sunrise":1435610796,"sunset":1435650870},
"id":2172797,
"name":"Cairns",
"cod":200}
Beberapa field yang muncul dalam contoh diatas bisa saja tidak muncul pada saat kita melakukan suatu request untuk suatu kota. Hal tersebut dipengaruhi oleh cuaca dan data yang diperoleh oleh OpenWeather akan bervariasi untuk setiap kota.
Untuk mendapatkan data prakiraan cuaca sampai dengan 5 hari kedepan, kita dapat melakukan GET request ke
api.openweathermap.org/data/2.5/forecast?id={id_kota}&appid={API_key}
,
dengan contoh response dari API sebagai berikut :
{
"cod": "200",
"message": 0.0097,
"cnt": 2,
"list": [
{
"dt": 1529377200,
"main": {
"temp": 305.5,
"temp_min": 302.371,
"temp_max": 305.5,
"pressure": 1024.71,
"sea_level": 1025.16,
"grnd_level": 1024.71,
"humidity": 89,
"temp_kf": 3.13
},
"weather": [
{
"id": 801,
"main": "Clouds",
"description": "few clouds",
"icon": "02d"
}
],
"clouds": {
"all": 12
},
"wind": {
"speed": 3.57,
"deg": 109.001
},
"sys": {
"pod": "d"
},
"dt_txt": "2018-06-19 03:00:00"
},
{
"dt": 1529388000,
"main": {
"temp": 306.11,
"temp_min": 303.764,
"temp_max": 306.11,
"pressure": 1022.99,
"sea_level": 1023.5,
"grnd_level": 1022.99,
"humidity": 83,
"temp_kf": 2.35
},
"weather": [
{
"id": 801,
"main": "Clouds",
"description": "few clouds",
"icon": "02d"
}
],
"clouds": {
"all": 12
},
"wind": {
"speed": 3.76,
"deg": 53.0044
},
"sys": {
"pod": "d"
},
"dt_txt": "2018-06-19 06:00:00"
}
]
}
Untuk lebih lengkapnya mengenai OpenWeather API, dapat dilihat disini.
Terdapat dua package utama dalam program ini, yang dibungkus dalam package com.pyra, yaitu weatherforecast dan weatherforecast.data. Package "pembungkus" com.pyra dibuat untuk mengikuti Google Java Code Style.
Dalam package com.pyra.weatherforecast, terdapat empat (4) class "penting", yaitu :
- Main : program utama dan layar utama (menampilkan layar pencarian kota)
- WeatherScreen : menampilkan cuaca sekarang dan prakiraan cuaca kota yang dipilih
- CitySearcher : bertugas untuk mencari kota dari data lokal berdasarkan kata kunci/substring tertentu dan mengembalikan ID dari kota tersebut. ID tersebut digunakan untuk berkomunikasi dengan OpenWeather API
- WeatherGrabber : bertugas untuk mengambil data cuaca dari OpenWeather API berdasarkan ID dari kota yang diinginkan.
Dalam package tersebut pula, terdapat satu package lagi, yaitu data, yang berisi representasi data yang digunakan dalam program ini. Dalam package ini terdapat class City, yang merepresentasikan sebuah kota, Weather yang merepresentasikan kondisi cuaca di suatu city, dan Forecast yang merepresentasikan prakiraan cuaca di suatu city.
Berikut adalah ilustrasi hierarkis dari package yang terdapat dalam program ini.
com
|--- pyra
|---- weatherforecast
|---- Main
|---- WeatherScreen
|---- CitySearcher
|---- WeatherGrabber
|---- data
|---- City
|---- Weather
|---- Forecast
Package | Component | Remarks | JUnit test | Keterangan |
---|---|---|---|---|
com.pyra.weatherforecast | Main | Completed | N/A | |
WeatherScreen | Completed | N/A | ||
CitySearcher | Completed | Completed, Passed | ||
WeatherGrabber | Completed | N/A, results are fluctuative | ||
com.pyra.weatherforecast.data | City | Completed | Completed, Passed | |
Weather | Completed | Completed, Passed | ||
Forecast | Completed | Completed, Passed | ||
Others | JDepend result | Generated | Filename : jdepend.txt |
subject to change
- Java 8
- json-simple
- Eclipse IDE (optional, untuk compiling)
Lakukan clone repository terlebih dahulu.
Gunakan Eclipse IDE untuk melakukan compiling dan eksekusi program dengan lebih mudah.
atau
Jika tidak ingin menggunakan Eclipse, gunakan Makefile yang telah disediakan. Berikut tahapannya :
- Buka console baru, lalu arahkan current directory ke tempat dimana file-file hasil clone repository diletakkan.
- Ketikkan
make clean
terlebih dahulu untuk membersihkan folder. Untuk pengguna Windows, gunakan perintah berikutuntuk Windows Powershell, ataurm src/com/pyra/weatherforecast/*.class rm src/com/pyra/weatherforecast/data/*.class
untuk Windows Command Prompt biasanya.del src/com/pyra/weatherforecast/*.class del src/com/pyra/weatherforecast/data/*.class
- Ketikkan
make all
untuk melakukan compiling dan eksekusi program, atau secara manual, untuk compiling, ketikkanmake build
, lalumake run
untuk melakukan eksekusi program.
Diatas merupakan tampilan utama program. Pada text bar disebelah kiri tombol Search, masukkanlah kata kunci dari nama kota yang ingin dicari.
Screenshot diatas merupakan contoh hasil pencarian. Pilih kota yang diinginkan, akan muncul jendela baru. Tunggu sebentar, maka data cuaca dan prakiraan akan muncul. Berikut contohnya.
Program ini menyediakan dua pilihan satuan untuk menampilkan data cuaca, yaitu dengan standar satuan metric atau imperial. Secara default, program menampilkan data dalam satuan metric. Untuk mengubahnya, pada jendela tersebut, klik "Unit" pada ujung kiri atas jendela, lalu pilih satuan yang diinginkan. Berikut contohnya.