Apa saja yang akan dibahas?
theme
Wah kelihatannya cukup ribet yah !
Ada juga tools yang bisa membantu kita dalam menemukan color pallete / warna / cara penulisan tema yang ada
Hati hati ! untuk tools MUI Theme Creator, penulisan codenya dalam typescript, sehingga ada sedikit modifikasi kode yang harus dilakukan yah !
Mari kita coba untuk membuat kode theme kita sendiri yah !
Yuk sekarang kita coba untuk membuat Listing Movie yang cuakep
Langkah pembuatan list dalam demo ini adalah:
Secara singkatnya langkah yang dilakukan tadi adalah:
import data from "/path/to/data.json"
Nah sampai di sini kita sudah berhasil membuat Listing Movie berdasarkan data internal JSON yang dimiliki oleh aplikasi
Sekarang, bagaimanakah bila kita ingin mengkonsumsi data yang disediakan oleh penyedia data yang ada di internet?
Ingat yah, kata kuncinya adalah PENYEDIA, artinya harus ada yang menyediakan data tersebut. (Bukan sembarang ambil / men"curi" data, itu tekniknya berbeda lagi)
Untuk itu, mari kita coba belajar tentang API terlebih dahulu yah
Apa itu API?
GET
, ekuivalen dengan READPOST
, ekuivalen dengan CREATE
PUT
, ekuivalen dengan UPDATE
DELETE
, ekuivalen dengan DELETE
Mari kita coba lihat gambar berikut yang menyatakan REST API
Pada pembelajaran ini kita TIDAK membuat REST API yah, melainkan kita akan belajar untuk mengkonsumsi data yang disediakan oleh REST API
Mari sekarang kita belajar suatu tools yang memudahkan kita untuk belajar konsumsi data dari REST API yang bernama Postman
Dikutik dari web Postman, ini adalah sebuah Platform API untuk membangun dan menggunakan API.
Dengan menggunakan Postman ini, kita bisa me-"nembak" API yang ingin kita coba gunakan dengan HTTP Method tertentu dan dengan data (request) tertentu, untuk mendapatkan data kembalian (response) sesuai dengan ketentuan output dari API penyedia data.
Postman ini dapat digunakan dengan cara install (berupa program) ataupun dengan menggunakan web Postman langsung (dengan limitasi).
Namun untuk menggunakannya caranya sama: HARUS memiliki akun Postman.
Nah setelah membuat akun, mari kita coba untuk mengkonsumsi API pertama kita yah !
Setelah kita mendapatkan key, maka kita bisa mencoba untuk me-"nembak" API TMDB yang kira kira bentuknya seperti ini (Ganti <<api_key>> dengan key yang kita dapatkan):)
https://api.themoviedb.org/3/movie/76341?api_key=<<api_key>>
Untuk me-"nembak" Endpoint API TMDB ini kita akan menggunakan Postman (sesuai gambar di bawah), dan tekan tombol Send untuk melihat hasil kembalian dari API TMDB
Untuk Endpoint yang akan digunakan untuk pembelajaran ini adalah GET /movie/popular
Mari kita coba untuk mengkonsumsi Endpoint API TMDB ini dengan menggunakan Postman
Nah setelah berhasil kita coba untuk mengambil data ini, tentunya sekarang kita akan memiliki pertanyaan donk:
Bagaimanakah cara kita menggunakan data ini ke dalam aplikasi React yang kita buat?
Untuk menjawab itu, mari kita belajar tentang axios terlebih dahulu yah !
Nah dari tadi kita mencoba untuk melakukan Komunikasi dengan server penyedia API via HTTP Protocol bukan?
Axios adalah Library Javascript yang bisa kita gunakan untuk melakukan komunikasi dengan server penyedia API. (HTTP Request) dan sudah berbasis Promise
Cara menggunakan axios
// POST Request
import axios from 'axios';
// Cara 1: Gunakan axios langsung
axios({
method: 'POST',
url: 'https://example.com/path/to/endpoint',
data: { firstData: "value1", secondData: "value2" }
})
// ingat ini promise based yah axiosnya !
.then(response => {
// handle success
})
// Cara 2: Gunakan axios method aliases (post)
axios.post(
'https://example.com/path/to/endpoint', // url
{ firstData: "value1", secondData: "value2" }, // data
{
// options lainnya (OPTIONAL, bila dibutuhkan)
}
)
.then(response => {
// handle success
});
Axios Method Aliases
axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.options(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
/*
Notes:
Ketika menggunakan cara alias, property url, method, dan data tidak perlu
didefinisikan di dalam config lagi
*/
Axios Response Schema (Hasil kembalian / response yang dibuat oleh axios)
{
// `data` adalah response kembalian yang diberikan oleh server / API
data: {},
// `status` adalah HTTP Status Code yang diberikan oleh server / API
status: 200,
// `statusText` adalah HTTP Status Text yang diberikan oleh server / API
statusText: 'OK',
// `headers` adalah HTTP headers yang diberikan oleh server / API
// seluruh nama header adalah dalam bentuk lower case dan bisa diakses dengan
// notasi bracket `[]`
// contoh: `response.headers['content-type']`
headers: {},
// `config` adalah config yang diberikan oleh kembalian response ini
config: {},
// `request` adalah request yang diberikan oleh kembalian response ini
request: {}
}
Mari kita coba untuk mengubah kode sebelumnya menjadi data asli dari TMDB dengan menggunakan Axios
Adapun langkah pengerjaannya adalah sebagai berikut:
npm install axios
Contoh kode lengkap bisa dilihat di sini
Sampai di sini kita sudah berhasil menarik data dari API TMDB
Tapi... di sini kita berasa ada yang janggal bukan?
Apa yang terjadi, seandainya kita punya banyak tarikan data dari TMDB?
Pastinya akan ada banyak sekali perulangan terhadap string URL yang dibuat bukan?
Bagaimana cara kita mengakalinya?
Salah satunya adalah dengan menggunkana axios Instance
Cara untuk membuat suatu instance axios dengan konfigurasi tertentu agar kode tidak berulang
Contoh penulisan kode dengan axios instance:
import axios from 'axios';
// Kita akan membuat instance axios di tempat lain
const instance = axios.create({
// Perhatikan baseURL ini adalah url dasar untuk setiap API
// yang ingin ditembak dengan axios
baseURL: 'https://api.example.com',
// Header yang ingin diberikan pada tiap request
headers: { ... },
// Params yang ingin diberikan pada tiap request
params: { ... },
// Timout (waktu yang diperbolehkan untuk request ini berjalan)
// Lebih dari waktu = timeout (response ditolak) dalam milisecond
timeout: 1000,
});
export default instance;
Mari kita coba untuk mengubah kode kita dengan menggunakan axios instance:
Contoh kode lengkap bisa dilihat di sini
Nah sampai di titik ini artinya kita sudah berhasil menggunakan Axios untuk bisa me-"nembak" data dari REST API pihak ketiga bernama TMDB.
Selamat belajar !