JavaScript Modul
JavaScript Modul
\n ENTER
\t TAB
\‟ „
\” “
\\ \
Kode : Escape Sequence
Variable
Kode : Tanpa Variable
Variable
● Variable adalah tempat untuk menyimpan data
● Dengan menyimpan data di variable, kita bisa menggunakannya lagi dengan menyebutkan nama
variable nya
● Untuk membuat variable di JavaScript, kita bisa menggunakan kata kunci var diikuti dengan nama
variable nya
● JavaScript adalah dynamic language, artinya variable di JavaScript tidak terpaku harus
menggunakan satu tipe data, kita bisa mengubah-ubah tipe data di variable yang sama
Kode : Variable
Mengubah Value di Variable
● Setelah variable di deklarasikan, kita bisa mengubah value atau nilai di dalam variable tersebut
● Untuk mengubahnya, kita bisa menggunakan perintah nama variable diikuti dengan tanda = (sama
dengan) lalu diikuti dengan value atau nilai nya
Kode : Mengubah Value di Variable
Membuat Variable Langsung Dengan Value
● Di JavaScript juga kita bisa mendeklarasikan sebuah variable, langsung dengan isi value nya
● Caranya kita bisa menggunakan kata kunci var, diikuti nama variable, lalu diikuti dengan tanda =
(sama dengan), dan di ikuti dengan value atau nilai nya
Kode : Variable dan Value
Mengakses Variable
● Salah satu keuntungan menggunakan variable adalah variable bisa digunakan kembali
● Hal ini akan mempermudah ketika membutuhkan data yang sama berkali-kali
● Untuk mengakses variable, kita cukup menyebutkan nama variable nya
Kode : Mengakses Variable
Kata Kunci let dan const
● Sebelum tahun 2015, kata kunci untuk membuat variable hanya bisa menggunakan kata kunci var
● Namun tahun 2015 sejak versi ECMAScript 2015, diperkenalkan kata kunci baru untuk membuat
variable, let dan const
● JavaScript sekarang tidak direkomendasikan lagi menggunakan kata kunci var untuk membuat
variable, namun diganti dengan let, hal ini dikarenakan ada masalah dari desain awal var (akan kita
bahas di chapter tersendiri)
Kode : Variable let
Kata Kunci const
● Kata kunci let itu seperti kata kunci var, dimana data di variable tersebut bisa diubah-ubah sesuka
kita
● Sedangkan kata kunci const berbeda, ketika sebuah variable sudah diisi di variable const, maka
variable tersebut tidak bisa diubah lagi value nya
● Variable sejenis ini kadang dibilang juga constant
Kode : Variable const
Operator Matematika
Operator Matematika
● JavaScript mendukung banyak sekali operator Matematika untuk tipe data Number, seperti :
● Operator Aritmatika
● Operator Augmented Assignments
● Operator Unary
● Dan lain-lain
Operator Aritmatika
Operator Keterangan
+ Pertambahan
- Pengurangan
* Perkalian
** Exponensial
/ Pembagian
% Sisa Bagi
Kode : Operator Aritmatika
Operator Augmented Assignments
Operator Matematika Operator Augmented Assigments
Operator Keterangan
== Sama Dengan
&& Dan
|| Atau
! Kebalikan
Operator &&
Nilai 1 Operator Nilai 2 Hasil
! true false
! false true
Kode : Operator Logika
Console
Console
● JavaScript memiliki fitur untuk melakukan logging bernama Console
● Logging adalah mekanisme yang biasa dilakukan oleh programmer untuk menampilkan informasi
dari aplikasi yang sedang berjalan, tanpa harus mengganggu alur kerja aplikasi dan juga interaksi
user
● Untuk melakukan ini, kita bisa menggunakan fitur Console di JavaScript
● Untuk menggunakan Console, kita cukup gunakan perintah console di kode JavaScript
Console Method
Operasi Keterangan
Undefined “undefined”
Null “object”
Boolean “boolean”
Number “number”
BitInt “bigint”
String “string”
Symbol “symbol”
Function “function”
Lainnya “object”
Kode : Operator typeof
In Operator
In Operator
● In operator adalah operator yang bisa dilakukan untuk mengecek apakah sebuah property ada di
dalam object atau tidak
● Jika property tersebut ada di object, maka hasilnya true, sedangkan jika tidak, maka hasilnya false
● Tidak hanya di object, In juga bisa digunakan untuk mengecek index di Array
Kode : In Operator
Peringatan
● In operator hanya akan mengecek apakah sebuah property atau index ada atau tidak
● Jadi walaupun nilai property atau index nya undefined atau null, maka tetap akan dianggap ada
Kode : In Operator Undefined/Null Property
Ternary Operator
Ternary Operator
● Ternary operator adalah operator sederhana dari if statement
● Ternary operator terdiri dari kondisi yang dievaluasi, jika menghasilkan true maka nilai pertama
diambil, jika false, maka nilai kedua diambil
Kode : Tanpa Ternary Operator
Kode : Dengan Ternary Operator
Nullish Coalescing Operator
Nullish Coalescing Operator
● Nullist value adalah null dan undefined
● Nullist coalescing operator (??) adalah operator mirip dengan ternary operator, yang membedakan
adalah pada kondisi, jika bernilai null atau undefined, baru value default nya diambil
Kode : Tanpa Nullish Coalescing Operator
Kode : Nullish Coalescing Operator
Optional Chaining
Optional Chaining
● Optional chaining operator (?) merupakan operator yang digunakan untuk mengamankan ketika
kita ingin mengakses property sebuah object dari data nullish
● Jika kita mencoba mengakses property dari sebuah object dari data nullish tanpa menggunakan
optional chaining operator, maka akan terjadi error
Kode : Error Mengakses Property Nullish
Error Mengakses Property Nullish
Kode : Pengecekan Menggunakan If
Kode : Menggunakan Optional Chaining
Falsy dan Truthy
Falsy
● Falsy atau kadang ditulis falsey, adalah value yang ketika dalam konteks boolean, dia dianggap
false
● Ini adalah salah satu fitur unik dari JavaScript, yang berguna, namun kadang juga sering
membingungkan
● Jadi di JavaScript, kondisi itu tidak hanya bisa boolean, tapi diluar boolean pun bisa, namun kita
harus tahu beberapa data falsy, atau dianggap false
Data Falsy
Data dianggap Falsy Keterangan
● Saat membuat aplikasi, sudah tentu kita tidak akan terhindar dari yang namanya error
● Di JavaScript, Error merupakan sesuatu yang sudah standar
● Banyak sekali class error di JavaScript, namun semua class error di JavaScript selalu berujung di
class Error, artinya class Error adalah superclass untuk semua jenis error di JavaScript
● Contoh class error yang terdapat di JavaScript contohnya SyntaxError, TypeError, EvalError, dan
lain-lain
● https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Error#error_types
Throw Error
● Saat kita membuat instance object dari class Error, tidak lantas otomatis terjadi error
● Kita perlu memberitahu program kita, bahwa kita akan mentrigger sebuah error terjadi, atau
istilahnya adalah melempar error (throw error)
● Untuk melempar error, kita bisa gunakan kata kunci throw, diikuti dengan instance object error
nya
● Jika terjadi error, maka otomatis kode program kita akan terhenti, dan kita bisa melihat detail
errornya di console di aplikasi browser kita
Kode : Throw Error
Console : Throw Error
Error Handling
Error Handling
● Saat terjadi error di kode program JavaScript, kadang kita tidak ingin program kita berhenti
● Di JavaScript, kita bisa menangkap jika terjadi error
● Kita bisa menggunakan try catch statement untuk menangkap error
● Pada block try, kita akan mencoba mengakses kode program yang bisa menyebabkan error, dan
jika terjadi error, block try akan berhenti dan otomatis masuk ke block catch
● Jika tidak terjadi error, block catch tidak akan dieksekusi
Kode : Error Handling
Kata Kunci finally
● Kadang kita ingin melakukan sesuatu entah itu terjadi error ataupun tidak
● Dalam try catch, kita bisa menambahkan block finally
● Block finally ini akan selalu dieksekusi setelah try catch selesai, entah terjadi error atau tidak,
block finally akan selalu dieksekusi
Kode : Kata Kunci finally
Try Finally
● Kata kunci finally juga bisa digunakan tanpa perlu menggunakan catch
● Biasanya ini digunakan dalam kasus tertentu
Kode : Try Finally
Membuat Class Error Manual
Membuat Class Error Manual
● Jika kita mengikuti kontrak Iterable, maka object yang kita buat akan bisa dilakukan iterasi
menggunakan for...of
● Setiap kita melakukan perulangan, object Iterator akan dibuat
● Hal ini menjadi aman jika kita melakukan iterasi berulang-ulang, karena Iterator baru akan dibuat
terus menerus
Kode : Membuat Counter Iterator Result
Kode : Membuat Counter Iterator
Kode : Membuat Counter Iterable
Kode : Menggunakan Counter Iterable
Materi Selanjutnya
JavaScript
Document Object Model
Eko Kurniawan Khannedy
Eko Kurniawan Khannedy
Node Merupakan base class untuk semua tipe data di DOM, seperti
Document, Element, dan Attr
● Number merupakan function yang digunakan untuk melakukan konversi ke tipe data number
● Jika data tidak bisa dikonversi ke number, secara otomatis hasilnya adalah NaN
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
Kode : Number
Number Static Properties
● Tipe data String sudah kita bahas pada materi JavaScript Dasar
● Namun kita belum membahas instance method atau juga instance properties yang terdapat di
String
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
String Instance Method dan Properties
● Sebelumnya kita biasa menggunakan for in dan for of untuk melakukan iterasi Array, namun Array
juga memiliki method yang bernama forEach()
● Method forEach bisa digunakan juga untuk melakukan iterasi data array
Kode : Array Loop
Array Queue
● Dalam struktur data, terdapat tipe struktur data bernama Queue (Antrian)
● Dimana data masuk akan diposisikan di urutan paling belakang
● Sedangkan data keluar akan diposisikan dari urutan paling depan
● Mirip sekali dengan antrian, atau istilahnya FIFO (first in first out)
● Kita bisa menggunakan Array dengan bantuan function push() untuk menambah data di belakang,
dan shift() untuk mengambil dan menghapus data paling depan
Kode : Array Queue
Array Stack
● Struktur data Stack (Tumpukan) kebalikan dari Queue, dimana aturannya mirip dengan tumpukan
kartu
● Saat kita memasukkan data, kita akan memasukkan di urutan paling belakang (atau atas)
● Sedangkan saat kita mengambil data, kita akan mengambil data dari paling belakang (atau atas)
terlebih dahulu
● Stack ini sifatnya LIFO (last in first out)
● Untuk menambah diurutan belakang, kita bisa menggunakan function push()
● Dan untuk mengambil dan menghapus paling belakang, kita bisa menggunakan function pop()
Kode : Array Stack
Array Search
Function Keterangan
findIndex(value => boolean) : number Mencari data index sesuai dengan kondisi
Function Keterangan
Function Keterangan
● https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Array#instance_methods
Object
Object
● Tipe data object sudah sering sekali kita bahas di JavaScript Dasar dan JavaScript OOP
● Pada materi ini, kita akan bahas banyak static method yang terdapat pada Object
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
Object Freeze & Seal
● Kadang kita ada kasus menggabungkan semua attribute dari sebuah object ke object lain
● Hal ini bisa kita lakukan dengan menggunakan Object.assign(target, source)
Kode : Object Assign
Object Property Name & Value
● Object juga memiliki static method untuk digunakan mengambil semua properties names dan
values
● Object.values() digunakan untuk mengambil semua property value
● Object.getPropertyNames() digunakan untuk mengambil semua properti name
Kode : Object Property Name & Value
Dan Function Lain-Lain
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
JSON
Pengenalan JSON
● JavaScript mendukung konversi data dari String json ke Object ataupun sebaliknya
● JSON.stringify() digunakan untuk melakukan konversi dari Object ke String
● JSON.parse() digunakan untuk melakukan konversi dari String ke Object
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON
Kode : JSON
BigInt
BigInt
● BigInt merupakan tipe data Number yang bisa mencakup data angka lebih dari
Number.MAX_SAFE_INTEGER
● Untuk kasus number yang lebih dari itu, sangat disarankan menggunakan tipe data BigInt
● Cara penggunaan BigInt sama saja dengan penggunaan Number dan juga operator nya
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt
Kode : BigInt
Date
Date
● JavaScript memiliki tipe data untuk representasi waktu dan tanggal, yaitu Date
● Date merupakan representasi milisecond sejak tanggal 1 Januari 1970, atau dikenal dengan Epoch
& Unix Timestamp
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Membuat Object Date
Untuk membuat object Date, kita bisa menggunakan new Date(), dimana terdapat constructor parameter
new Date(year, month, date?, hour?, Membuat date dengan parameter sampai
minute?, second?, milis?) milis
● Dalam menggunakan tipe data waktu, biasanya disemua bahasa pemrograman akan mendukung
yang namanya epoch & unix timestamp
● Epoch & Unix timestamp merupakan hitungan miliseconds setelah tanggal 1 Januari 1970
● JavaScript pun mendukung pembuatan waktu dalam bentuk epoch dan unix timestamp
● Untuk mendapatkan waktu saat ini dalam epoch & unix timestamp, kita bisa menggunakan
Date.now()
● Untuk mengubah dari object date ke epoch & unix timestamp, kita bisa menggunakan function
getTime()
Kode : Unix Timestamp
Parsing Date
● Kita juga bisa melakukan parsing membuat date dari string menggunakan method
Date.parse(value)
● Format string harus YYYY-MM-DDTHH:mm:ss.sssZ
● Dimana jika kita hanya membuat date berisi tanggal saya, kita cukup gunakan YYYY-MM-DD
● Jika date dengan tanggal dan waktu, gunakan YYYY-MM-DDTHH:mm:ss.sss
● Jika date dengan tanggal, waktu dan timezone, gunakan YYYY-MM-DDTHH:mm:ss.sssZ
● Hasil parsing adalah unix timestamp, bukan object date
Format Date
YYYY Tahun
MM Bulan
DD Tanggal
HH Jam
mm Menit
ss Detik
sss Milidetik
Z Timezone
Kode : Parsing Date
Date Getter dan Setter
● Date juga memiliki banyak sekali method untuk mendapatkan informasi date dan juga mengubah
informasi date, atau istilahnya adalah getter dan setter
● https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Date#instance_methods
Kode : Date Getter dan Setter
Math
Math
● Math merupakan class di JavaScript yang berisikan static property dan method untuk operasi
matematika
● Ada banyak sekali static property dan method di Math
● Math hanya bisa digunakan untuk tipe data Number, tidak bisa digunakan untuk tipe data BigInt
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math
Kode : Math
Boolean
Boolean
Pertama dibuat, tidak memiliki key Karena memiliki prototype, jadi bisa jadi
memiliki default key ketika pertama dibuat
Key bisa tipe data apapun Key hanya bisa string atau symbol
Jumlah key bisa diketahui dengan mudah Tidak bisa diketahui, harus manual
dengan attribute size menggunakan iterasi
Secara default tidak bisa dikonversi ke Bisa dikonversi ke JSON secara otomatis
JSON
Map Instance Method & Property
Method & Property Keterangan
● Set merupakan implementasi dari struktur data yang berisikan data-data unique
● Set mirip seperti Array, hanya saja isi datanya selalu unique
● Jika kita menambahkan data yang sama, maka data hanya akan diterima satu saja
● Set mengimplementasikan kontrak iterable, sehingga bisa diiterasi secara default
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
Set Instance Method & Property
Method & Property Keterangan
● Symbol merupakan tipe data yang digaransi akan selalu unique setiap kali kita membuat data
symbol
● Symbol kadang banyak digunakan untuk membuat key pada object
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol
Kode : Symbol
Symbol For
Modifier Keterangan
replaceAll(regex, value) Mengubah semua data dengan value yang sesuai regex
● Proxy merupakan fitur yang bisa digunakan sebagai wakil sebuah data
● Dengan menggunakan proxy, semua interaksi ke data akan selalu melalui Proxy terlebih dahulu
● Dengan ini, kita bisa melakukan apapun sebelum interaksi dilakukan ke data yang dituju
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
Proxy Handler
● Pembuatan Proxy perlu menggunakan handler, dimana dalam handler, kita bisa membuat function
yang dinamakan interceptor yang digunakan ketika mengambil data atau mengubah data ke target
● Untuk membuat Proxy, kita bisa menggunakan new Proxy(target, handler)
Kode : Membuat Handler
Kode : Membuat Proxy
Proxy dan Handler
● Saat kita mengubah data proxy, secara otomatis data akan dikirim ke target melalui handler
dengan memanggil function set(target, property, value)
● Saat kita mengambil data proxy, secara otomatis data akan diambil dari target melalui handler
dengan memanggil function get(target, property)
● Artinya, jika kita ingin melakukan sesuatu sebelum dan setelah nya, bisa kita lakukan di handler
Kode : Log Handler
Reflect
Reflect
● Saat kita menulis URL, kadang kita ingin menambahkan informasi tambahan seperti query
parameter misalnya
● URL sendiri sudah memiliki standard encoding penulisan URL
● Standard encoding ini dilakukan agar penulisan URL aman ketika diterima oleh server
● Aman disini dalam artian informasi URL tidak berubah
● Contoh paling sederhana, misal, walaupun kita bisa mengirim spasi dalam url, tapi disarankan
untuk di encode agar nilai spasi tidak benar-benar terlihat seperti spasi pada URL nya
Contoh Masalah Jika Tidak Menggunakan Encode
● Misal ada query parameter dengan nama data, lalu kita ingin mengirimkan nilai kesana
● Misal nilainya adalah &eko=eko&, alhasil URL nya akan seperti berikut
● http://contoh.com?data=&eko=eko&
● URL diatas terlihat tidak ada masalah, tapi sebenarnya ketika diterima oleh server, parameter data
bernilai kosong, kenapa? karena & dianggap sebagai pemisah antar parameter
● Artinya tanda seperti & dan lain-lain perlu di encode, agar tidak terjadi kesalahan data yang kita
kirim
Encode Function
Function Keterangan
● Base64 merupakan binary to text encoding, representasi binary data dalam format string
● Base64 merupakan format text data yang aman untuk dikirimkan di web
● Base64 merupakan encoding yang biasanya digunakan ketika perlu mengirim data dari client ke
server
● Karena encoding Base64 merupakan text, oleh karena itu sangat aman digunakan pada query
param URL atau text body dalam form
● https://developer.mozilla.org/en-US/docs/Glossary/Base64
Base64 Function
JavaScript memiliki function bawaan untuk melakukan encode Base64 atau decode base64
Function Keterangan
● Eval merupakan function yang digunakan untuk mengeksekusi kode JavaScript dari String
● Fitur ini sangat menarik, namun perlu hati-hati ketika menggunakannya
● Jika sampai salah penggunaan, maka bisa jadi kita malah mengeksekusi kode program yang bisa
menyebabkan masalah keamanan di website kita
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval
Kode : Eval
Materi Selanjutnya
Materi Selanjutnya
● JavaScript Modules
● JavaScript Document Object Model
● JavaScript Async
● JavaScript Web API
JavaScript
Document Object Model
Eko Kurniawan Khannedy
Eko Kurniawan Khannedy
Node Merupakan base class untuk semua tipe data di DOM, seperti
Document, Element, dan Attr
Node Merupakan base class untuk semua tipe data di DOM, seperti
Document, Element, dan Attr
● GET
● POST
● PUT
● DELETE
● HEAD
● OPTION
Stateless
● HTTP merupakan protokol yang stateless
● Artinya tiap HTTP Request merupakan request yang independen, tidak ada keterkaitan atau
hubungan dengan HTTP Request sebelum atau setelah nya
● Hal ini dilakukan agar HTTP Request tidak harus dilakukan dalam sequence, sehingga client bisa
melakukan HTTP Request secara bebas tanpa ada aturan harus dimulai dari mana
Session
● Jika HTTP merupakan protokol yang stateless, bagaimana dengan session? Misal client harus login
terlebih dahulu sebelum berinteraksi?
● Untuk menangani permasalahan seperti ini, HTTP memiliki fitur yang bernama HTTP Cookie
● HTTP Cookie memaksa client menyimpan informasi yang diberikan oleh server
HTTP Version
HTTP Version
● Spesifikasi HTTP selalu diperbaharui
● Saat ini, kebanyakan web berjalan di HTTP/1.1 atau HTTP2
● HTTP2 mulai hadir sekitar tahun 2015, dan saat ini sudah banyak diadopsi oleh semua Web di
Dunia
HTTP/1.1 vs HTTP/2
● Saat ini HTTP/1.1 merupakan fallback protocol, dimana Web Browser secara default akan
melakukan request menggunakan HTTP/2, jika web server tidak mendukung, maka web browser
akan melakukan fallback ke protocol HTTP/1.1
● Secara garis besar, spesifikasi HTTP/2 sama dengan HTTP/1.1, yang membedakan adalah pada
HTTP/2, HTTP Request yang dikirim dalam bentuk teks, secara otomatis menjadi binary, sehingga
lebih cepat dibandingkan HTTP/1.1
● Selain itu di HTTP/2, menggunakan algoritma kompresi untuk memperkecil request dan
mendukung multiplexing, sehingga bisa mengirim beberapa request dalam satu connection yang
sama
● Dari sisi pembuatan aplikasi, tidak ada perbedaan, semua ini biasanya sudah diurus secara
otomatis oleh Web Server yang kita gunakan
HTTPS
● Secara default, HTTP tidaklah aman
● HTTPS merupakan HTTP dengan enkripsi
● Perbedaan HTTP dan HTTPS adalah, pada HTTPS menggunakan SSL (Secure Sockets Layer) untuk
melakukan enkripsi HTTP Request dan HTTP Response
● Hasilnya HTTPS jauh lebih aman dibanding dengan HTTP biasa
● Web yang menggunakan HTTPS akan menggunakan https:// pada url nya, dan yang hanya
menggunakan HTTP tanpa enkripsi, akan menggunakan http://
HTTP Terminology
HTTP Terminology
● Saat kita belajar HTTP, ada banyak sekali menggunakan terminologi, istilah atau teknologi
● Dan kita perlu mengerti tentang hal tersebut
Web Browser
● Merupakan aplikasi yang digunakan untuk mengakses Web menggunakan protokol HTTP
● Contohnya aplikasi Google Chrome, Firefox, Opera, Safari, dan lain-lain
TCP
● TCP singkatan dari Transmission Control Protocol, adalah salah satu protokol dalam jaringan
komputer yang biasa digunakan oleh web, email, FTP atau lainnya
● Jika kita menggunakan jaringan internet, kemungkinan besar kita akan menggunakan protocol
TCP untuk melakukan koneksi jaringan nya
IP
● IP singkatan dari Internet Protocol
● IP digunakan sebagai identitas komputer di jaringan
● Setiap komputer baik itu client dan server akan memiliki IP
● Untuk mengecek IP jaringan kita di internet, contohnya kita bisa mengakses web
https://whatismyipaddress.com/
URL
● URL singkatan dari Uniform Resource Locator
● URL merupakan alamat dari sebuah resource di Web
DNS
● DNS singkatan dari Domain Name Server
● DNS merupakan tempat yang berisi data katalog pemetaan antara nama domain di URL menuju
lokasi IP komputer
● Saat Web Browser mengakses sebuah domain di web, sebenarnya prosesnya akan bertanya ke
DNS untuk mendapatkan IP, lalu Web Browser akan melakukan request ke IP tersebut
● Untuk mengecek IP sebuah domain, kita bisa gunakan website https://www.whatismyip.com/dns-
lookup/
Web Server
● Web Server merupakan aplikasi yang berjalan di jaringan Internet yang bertugas sebagai server
● Web Server berisi informasi dan data yang biasa diakses oleh client
● Web Server akan menerima request dari client, dan membalas request tersebut berupa informasi
yang diminta oleh client
HTTP Flow
HTTP Flow
● Bagaimana alur kerja HTTP?
● Dalam HTTP, biasanya terdapat dua pihak yang terlibat, yaitu Client dan Server
● Client akan mengirimkan Request
● dan Server akan menerima Request dan membalas dengan Response
Server
● Server merupakan sebuah komputer, dimana semua informasi disimpan pada komputer tersebut
● Komputer server biasanya menjalankan aplikasi Web Server agar bisa menerima protocol HTTP
Diagram HTTP Flow
Client
● Client merupakan komputer yang bertugas mengirim HTTP Request ke komputer Server
● Untuk mengirim request HTTP, biasanya client akan menggunakan aplikasi Web Browser
● Client dan Server harus terkoneksi dalam jaringan yang sama, agar bisa berkomunikasi
● Misal saja, client dan server terhubung dalam jaringan internet
Diagram HTTP Flow
Request
● Client akan mengirim request ke Server dalam bentuk HTTP Request
● HTTP Request berisikan informasi seperti lokasi resource, data yang dikirim jika ada, dan lain-lain
● HTTP Request akan diterima oleh Server
● Selanjutnya Server akan memproses request yang diminta oleh Client tersebut
Diagram HTTP Flow
Response
● Setelah Server memproses HTTP Request yang dikirim oleh Client
● Server akan membahas dengan HTTP Response
● HTTP Response biasanya berisikan data yang diminta oleh Client dalam HTTP Request
Diagram HTTP Flow
Browser Network Tool
Browser Network Tool
● Untuk lebih mempermudah melihat apa yang dilakukan di belakang Web Browser, biasanya Web
Browser memiliki fitur Network Tool
● Contohnya di browser seperti Google Chrome dan Firefox sudah memiliki Network Tool
● Dengan Network Tool, kita bisa melihat semua detail HTTP Request dan HTTP Response yang
dilakukan oleh Client dan Server
Tugas
● Buka website https://www.programmerzamannow.com
● Lalu lihat informasi HTTP Request dan HTTP Response yang terjadi menggunakan Network Tool
yang terdapat di Web Browser yang kita gunakan
HTTP Request dan Response
HTTP Message
● HTTP Request dan HTTP Response, sebenarnya adalah sebuah HTTP Message
● HTTP Message memiliki standarisasi format
● Dengan demikian, jika kita ingin membuat Client dan Server sendiri, sebenarnya bisa kita lakukan,
asal kita mengikuti standarisasi format HTTP Message
HTTP Message untuk Request
HTTP Message untuk Response
HTTP Method
HTTP Method
● Dalam HTTP Request, hal yang pertama kita perlu tentukan adalah HTTP Method
● HTTP Method mirip seperti kategori request
● Ada banyak HTTP Method yang dapat kita gunakan ketika membuat HTTP Request, dan kita bisa
sesuaikan sesuai dengan kebutuhan yang kita inginkan
HTTP Message
Jenis HTTP Method (1)
HTTP Method Keterangan
HEAD HEAD method digunakan sama seperti dengan GET, tapi tanpa
membutuhkan response body
● setTimeout(callback, timeInMilis), digunakan untuk menjalankan proses Async sekali dalam waktu
tertentu.
● setInterval(callback, timeInMilis), digunakan untuk menjalankan proses Async secara periodik
dalam waktu tertentu.
Kode : setTimeout
Kode : setInterval
AJAX
Apa itu AJAX?
● AJAX singkatan dari Asynchronous JavaScript and XML
● AJAX biasanya digunakan untuk mengambil atau mengirim data ke URL lain
● Untuk membuat AJAX, kita bisa menggunakan class XMLHttpRequest
● https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
Cara Kerja AJAX
Kode : Membuat AJAX
Menerima Data di AJAX
Menerima Data di AJAX
● AJAX biasanya digunakan untuk mengirim data ke Server atau menerima data dari Server
● Tiap request AJAX yang dilakukan, biasanya kita ingin mendapat informasi response yang
diberikan oleh Server
● Kita tidak bisa langsung mengambil response AJAX, karena proses AJAX adalah Async, sehingga
kita perlu menunggu sampai proses Async nya selesai.
● Untuk mendapatkan informasi AJAX, kita bisa menggunakan AJAX Callback, yang akan dieksekusi
setelah proses AJAX selesai
● Untuk menambahkan AJAX Callback, kita bisa tambahkan pada event load
● https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/load_event
● Dan untuk mengambil datanya dari server, kita bisa menggunakan property responseText
Kode : Menerima Data di AJAX
Response Status di AJAX
Response Status
● AJAX adalah proses komunikasi Client dan Server
● Dalam komunikasi Client dan Server, kita tidak bisa selalu menganggap proses tersebut akan
berjalan lancar.
● Akan ada banyak hal-hal yang bisa mengganggu proses AJAX yang bisa menyebabkan error,
seperti; koneksi internet bermasalah, error dari server, data dari client tidak valid, dan lain-lain.
● Server biasanya akan mengirimkan HTTP Status Code yang sesuai dengan jenis response nya,
seperti yang sudah dibahas di materi HTTP
● Untuk mengetahui status response dari Server, kita bisa menggunakan property status
● https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status
Response Status di AJAX
State di AJAX
State di AJAX
● AJAX memiliki tahapan state, dimana kita bisa mendapatkan banyak sekali state di Ajax
menggunakan property readyState
● Property readyState mengembalikan nilai number, dimana tiap number merupakan representasi
dari statenya
Daftar State
Ready State Change Event
● Jika kita ingin mendengarkan perubahan yang terjadi pada state, kita bisa menggunakan event
readystatechange
● https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/onreadystatechange
Kode : Ready State Change Event
Hookbin
Hookbin
● Sebelum kita melanjutkan belajar AJAX, kita perlu bantuan Server sebagai tujuan pengiriman data
di AJAX
● Kita akan menggunakan salah satu website yang gratis dan lumayan populer untuk menerima data
AJAX yang kita kirim, yaitu Hookbin
● Hookbin adalah aplikasi yang bisa digunakan untuk menerima request HTTP dan menyimpan
datanya, dengan ini kita bisa menggunakan Hookbin untuk melihat detail dari data AJAX yang kita
kirim
● https://hookbin.com/
Alternative Lain
Jika teman-teman mendapat masalah ketika mengakses website Hookbin, ada banyak alternatif lain
website seperti Hookbin, misalnya :
● https://requestbin.net/
● https://pipedream.com/requestbin
● https://beeceptor.com/
Mengirim Data dengan AJAX
Mengirim Data dengan AJAX
● Saat kita menggunakan AJAX, biasanya bukan hanya untuk mengambil data dari Server
● Kadang kita juga ingin mengirim data dari Client ke Server, misalnya kita membaca semua data di
Web Form, lalu mengirimkan ke Server menggunakan AJAX
● Untuk melakukan ini, kita bisa menambahkan parameter data yang akan kita kirim pada method
send() milik XMLHttpRequest
● https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send
Kode : Web Form
Kode : Mengirim Data dengan AJAX
URL Search Param
URL Search Param
● Selain format JSON, kadang saat mengirim data menggunakan AJAX, kita hanya mengirim dalam
bentuk Query Parameter
● Pada kasus ini, kita bisa saja mengubah url nya dengan menambahkan Query Parameter, namun
ada cara yang lebih mudah, yaitu menggunakan object URLSearchParam
● Kita bisa memanfaatkan object URLSearchParam sebelum membuat URL
● https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
Kode : URL Search Param
Form Data dengan AJAX
Form Data dengan AJAX
● Selain JSON dan Query Param, kadang kita juga mengirim Form Data dari Client ke Server
menggunakan AJAX
● Untuk kasus ini kita tetap bisa menggunakan URLSearchParam
● Namun object URLSearchParam nya kita kirim di method send()
Kode : Form Data dengan AJAX
Upload File dengan AJAX
Upload File dengan AJAX
● Selain menggunakan JSON, Query Param, Form, kadang kita butuh mengirim file ke Server
● Untuk mengirim file ke Server, kita perlu menggunakan object Form Data, lalu kita perlu
menambahkan object File ke dalam FormData tersebut
● https://developer.mozilla.org/en-US/docs/Web/API/FormData
● https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file
● https://developer.mozilla.org/en-US/docs/Web/API/File
● https://developer.mozilla.org/en-US/docs/Web/API/FileList
Kode : Upload File dengan AJAX
Promise
Apa itu Promise?
● Promise merupakan proxy untuk sebuah nilai di masa depan (Future) yang belum diketahui saat
pembuatan Promise tersebut.
● Biasa Promise digunakan sebagai proxy untuk proses Async.
● Penggunaan Promise sangat mudah, dan lebih mirip dengan kode Synchronous.
● https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
Masalah dengan Callback
Promise State