Rest Api merupakan sebuah teknologi transfer (Representational State Transfer / Rest), gaya arsitektur dan pendekatan komunikasi yang sering digunakan dalam pengembangan layanan web.
Rest yang digunakan oleh browser dapat dianggap sebagai bahasa internet. Dengan meningkatnya penggunaan cloud, API muncul untuk mengekpos layanan web. REST adalah pilihan logis untuk membangun API yang memungkinkan pengguna untuk terhubung dan berinteraksi dengan layanan cloud. API telah banyak digunakan oleh situs-situs seperti Amazon, Google, LinkedIn dan Twitter.
Tanpa banyak pengantar mari langsung eksekusi saja....
Eh tetapi sebelum lanjut pembahasan ada beberapa yang harus diperhatikan dulu, yaitu :
- Telah terpasang Rust (Go : Klik Disini) atau jika kalian pengguna Linux (kayak saya) langsung eksekusi perintah curl http://sh.rustup.rs -sSf | sh di terminal Linux.
- Telah dipasang VSCode (Visual Studio Code) di PC atau Laptop.
Setelah projek kita jadi kita cek projek kita dengan perintah ls maka akan terlihat sebuah folder dengan nama mystore dan didalamya akan terlihat struktur seperti berikut ini :
Jika step-by-step diikuti dengan benar maka sekarang kita tinggal menambahkan depedensi web framework, kita menggunakan actix-web sebuah framework yang memiliki tingkat level tinggi dalam keluarga actix. Tambahkan :
[depedency]
actix = "1.0"
actix-web = "1.0.0-beta"
Setelah itu dalam terminal ketikka cargo build yang akan meng-compile crate dan projek kita juga ter-compile. Selanjutnya kita akan memulai dengan menampilkan teks "Hello World!" di browser dengan Rest API, perhatikan petikan kode dibawah ini :
Eksekusi program sederhana di atas dengan perintah cargo run, biasanya akan sedikit memakan waktu karena akan mem-build depedensi yang telah kita tambahkan dalam file Cargo.toml tadi. Seharusnya tidak akan tampil error atau warning apapun jika mengikuti step-by-step yang telah dijelaskan...
Setelah proses running berhasil maka akses http://localhost:8088 dan lihatlah apa yang tampil dalam layar browser. Jika kalian melihat tulisan Hello World! itu menandakan bahwa semuanya berjalan lancar seperti yang diharapkan.
Selanjutnya kita akan memulai membuat program Rest Api untuk menampilkan data yang tersimpan dalam basis data (database) PostgreSQL. Saya asumsikan di komputer kalian sudah terinstal PostgreSQL yak, hehe | Sebagai alat untuk menyambungkan Rust dengan PostgreSQL kita membutuhkan sebuah driver, salah satu driver yang powerful untuk digunakan dalam Rust adalah diesel. Pada file Cargo.toml kita tambahkan :
diesel = { version = "1.0.0", features = ["postgres"] }
dotenv = "0.9.0"
Pada terminal VSCode kita tinggal menjalankan perintah cargo build untuk mem-build depedensi dan meng-install crate kedalam projek kita. Akan lebih baik lagi kita kita meng-install sebuah tool yang bernama diesel_cli dengan perintah cargo install diesel_cli.
Selanjutnya, pada tahap ini kita akan membuat sebuah file berekstensi (dot) env dengan cara ketikkan perintah berikut dalam terminal VSCode :
echo DATABASE_URL=postgres://postgres:@localhost/mystore > .env
Kemudian enter yang akan membuat file baru dengan ekstensi .env yang berisi sebuah variabel untuk koneksi ke database PostgreSQL. DATABASE_URL bisa diganti dengan nama terserah yang penting harus ingat, karena nanti akan dipanggil dalam file lain. Jika namanya tidak sesuai pasti akan mengakibatkan error dong... :)
Sekarang semua telah siap untuk menjalankan diesel, jalankan perintah diesel setup untuk membuat database, jika ada kesalahan dalam menjalankan perintah diesel setup silakan cek disini.
Next step yaitu membuat sebuah handle, kita asumsikan bahwa kita akan menampilkan data-data dalam toko. Kita akan membuat sebuah tabel products sebagai tempat penyimpanan data yang kita miliki. Jalankan perintah :
diesel migration generate creata_products
Perintah CLI diatas akan membuatkan kita sebuah folder baru dan didalamnya akan terdapat 2 file migration dengan nama up.sql dan down.sql. File up.sql merupakan file yang digunakan untuk membuat tabel sedangkan file down.sql merupakan kebalikannya. Mudah si ? Next kita isi file up.sql dengan perintah membuat tabel products :
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR NOT NULL,
stock FLOAT NOT NULL,
price INTEGER
)
Sedang dalam file down.sql kita isi dengan perintah untuk menghapus tabel products :
DROP TABLE products
Selanjutnya aplikasikan SQL diatas dengan perintah diesel migration run. Setelah fix semua, kemudian kita kembali masuk ke file main.rs dengan menambahkan perintah :
#[macro_use]
extern crate diesel;
extern crate dotenv;
Tahap selanjutnya kita membuat sebuah file untuk meng-handle koneksi ke database, kita beri nama dengan db_connection.rs dan simpan file tersebut dalam folder src. File db_connection.rs tersebut kita isi dengan code :
Next, kita akan membuat sebuah resource (sumber) list dari products. Kita membutuhkan dua struk (struct) dimana satu struk untuk membuat resource dan yang satunya digunakan untuk diambil datanya. Dalam kasus ini tentu struk ini untuk operasi tabel products. Kita buat folder bernama models dalam folder src ( src/models ) dimana nanti digunakan untuk menyimpan resource yang akan kita buat.
Tetapi sebelum itu kita tuliskan beberapa baris code yang digunakan untuk me-load file tersebut dalam file main.rs :
Kemudian dalam folder models yang telah kita buat tadi, kita buat file baru dengan nama mod.rs dengan isi :
pub mod product;
Dan satu file lagi dengan nama product.rs dengan isi :
Kemudian pada baris selanjutnya tambah baris kode berikut untuk me-list data dalam tabel products yang telah tersimpan. Kita membuat struk baru dengan nama ProductList serta membuat fungsi untuk mengambil data dalam tabel.
OK! Sudah 80% gaes kita, hampir selesai bukan ? Sekarang kita tinggal mengedit Cargo.toml, main.rs dan models/product.rs.
Dalam file Cargo.toml kita tambahkan perintah baris :
serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"
Dalam file main.rs kita tambahkan file :
Nah dalam file models/product.rs kita menambahkan :
Kemudian dalam folder src/handlers kita tambahkan file baru dengan nama mod.rs disertai dengan isi code yang sangat sederhana :
pub mod products;
Lalu buat file baru juga dengan nama products.rs yang berisi kode :
Dan akhirnya kode terakhir yang akan kita tambahkan dalam file main.rs. Ubah code sehingga menjadi seperti tampil seperti code dibawah ini :
Tambahkan sebuah data pada tabel products yang telah kita buat, kemudian kita bisa melihat hasilnya dengan cara mengetikkan http://localhost:8088/products. Perintah insert data dapat kita lakukan lewat terminal dengan cara :
psql -U postgres -d mystore -c "INSERT INTO products(name, stock, price) VALUES ('sepatu', 5, 100);"
Jika semua sesuai dengan step-by-step yang telah dijelaskan maka data tersebut akan tampil seperti dibawah ini :
Nah, selesai juga artikel panjang ini gaes....
Ada pertanyaan atau saran langsung saja komentar yak....
Tags:
Rust