🌍 HTTP & REST API

JSON, method, status code — cara device "berbicara" dengan cloud API.

Alur HTTP request response IoT
Device → POST JSON → server → response (status + body)

📌 1. HTTP untuk IoT

HTTP adalah protokol "universal" — semua platform cloud memilikinya. Untuk IoT, HTTP dipakai lewat REST API: endpoint dengan path bermakna + data JSON.

MethodArtiContoh IoT
GETAmbil dataGET /api/suhu?device=sensor-01
POSTKirim data baruPOST /api/data dengan body JSON
PUTGanti dataPUT /api/lampu/1 → {"nyala": true}
DELETEHapus dataDELETE /api/device/sensor-09
Status CodeArti
200OK — sukses
201Created — data baru tersimpan
400Bad Request — format salah
401 / 403Unauthenticated / Forbidden — token salah/tidak berhak
404Not Found — path tidak dikenal
500Server Error — masalah di server

📌 2. Mengirim Data Sensor ke Cloud (POST)

Di simulator, MockServer berperan sebagai cloud API. Daftarkan handler-nya, lalu POST data JSON dari "device".

Output:

📌 3. GET & Status Code

Output:

📌 4. MQTT vs HTTP: Kapan Pakai yang Mana?

AspekMQTTHTTP/REST
ModelPub/sub via brokerRequest/response langsung
KoneksiLong-lived (1 koneksi, banyak pesan)Short-lived (per request)
OverheadSangat kecil (header 2 byte)Lebih besar (header per request)
Dari cloud ke deviceMudah (cukup publish)Sulit (device harus polling / webhook)
Use caseTelemetri kontinu, kontrol real-timeSinkron sesekali, integrasi sistem, OTA
💡 Praktiknya sering kombinasi: MQTT untuk aliran data real-time, HTTP untuk setup, konfigurasi, dan integrasi dengan sistem lain.

🧠 Latihan

  1. Tambah endpoint GET /api/terakhir yang mengembalikan data sensor terakhir yang di-POST (simpan di variabel luar handler).
  2. Buat handler POST /api/data yang mengembalikan 400 (pakai Response(400, {...})) jika body tidak punya kunci "device". Uji dengan dan tanpa kunci.
  3. Buat endpoint PUT /api/lampu/1 yang menyimpan state nyala/mati, lalu GET /api/lampu/1 untuk membacanya. Simulasikan 3 perintah dari "aplikasi HP".
  4. Jelaskan: kenapa untuk 1000 sensor yang mengirim tiap 5 detik, MQTT lebih hemat daripada HTTP? (Petunjuk: jumlah koneksi & header.)