Tutorial RESTful API dengan Flask Python Part 1 — Pengenalan & Instalasi
Membuat RESTful API dengan Micro Framework Python, Flask Part 1 — Pengenalan dasar Flask dan Instalasi
Halo semua, udah lama banget nih ngga ngulik, semenjak jadi mahasiswa tingkat akhir kesibukan saya dengan laporan PKL, dan seminar proposal, hingga skripsi sudah didepan mata. Saya minta doanya kepada para reader blog setia saya untuk mendoakan semoga semuanya mudah yaa sehingga saya bisa terus ngulik dan berbagi informasi di blog saya ini.
Ohiya pada kesempatan kali ini saya mau bahas gimana caranya membuat RESTful API dengan Flask, yaitu sebuah micro framework milik sebuah bahasa paling gokil se-alam semesta, yaitu Python.
Curhat dulu neh gan, sebelumnya saya pernah belajar Flask ditahun 2015, kebetulan waktu itu dosen yang deket sama ane suka nyekokin ane ngoding dan waktu itu belajar buat web E-commerce pake Flask, gimana reaksi ane? Ya anak semester 1 kaga ngerti banyak, dicekokin ngoding pusing iya jago kaga hahaha. Tapi ngga apa, karena ane dicekokin ngoding makanya ane jadi kecanduan coding sekarang, mending kecanduan coding sih daripada kecanduan obat terlarang. 😜
Oke sekarang kita jelasin dulu apa itu Flask. Flask itu apasih? Saya kutip dari wikipedia nih:
Flask is a micro web framework written in Python. It is classified as a microframework because it does not require particular tools or libraries. It has no database abstraction layer, form validation, or any other components where pre-existing third-party libraries provide common functions. However, Flask supports extensions that can add application features as if they were implemented in Flask itself.
Yang pada intinya adalah Flask adalah sebuah micro web framework dari bahasa Python. Flask disebut microframework karena ia ngga butuh tools atau library. Dia juga ngga ada layer abstraksi, validasi form, atau bahkan komponen lainnya dari pihak ketiga yang nyediain fungsi pada umumnya. Namun, Flask bisa nambahin ekstensi dan fitur di aplikasi dari pihak ketiga.
Ngeliat Flask yang udah disebut micro web framework, bisa kita bayangkan betapa kecilnya Flask. Iya, emang kecil banget!
Performa gimana cuy? Jelas kenceng lah! Kenapa gitu? Alasan yang pertama ia ditulis dalam bahasa Python. Ini uler sanca alias uler python itu adalah bahasa yang emang performanya baik banget. Kedua, ia micro framework, ngga kaya micro framework sebelah si larapel, ini lebih kecil lagi dan ngga punya library bawaan. Jadi udah dipastiin tuh kenceng banget performanya, karena ya….. ngga ada library bawaan. 😅
Namun tentu aja kekurangannya terlihat jelas, Flask ini karena microframework jadi apa-apa nambahinnya kudu manual, jadi bakalan kudu inget-inget nih library apa yang kalian butuhin, selain itu library flask masing-masing kepisah, kaya library untuk validasi, library untuk koneksi ke DB dan lainnya, ribet ya? hehehehe. Selain itu Flask juga belum punya pattern dasar, ya meskipun bisa dibuat MVC sih, tapi dari awal flask diinstall pun ngga seenak lumen larapel yang otomatis ngebuat foldernya, tapi harusnya udah ada library yang nyiptain folder otomatis sih.
Tapi ya kalo yang biasa jadi JS Boy alias Fanboynya Javascript yaitu NodeJS seperti Express, Fastify, Koa, Hapi, dan lainnya pasti ngga akan terlalu kaget karena emang di JS pun ya WILD banget patternya, alias sesuka seenaknya si developer naruh dimana filenya dan tidak punya standarisasi pas install.
Oke kalo gitu lesgooo kita start.
Pertama pastiin dulu kalian udah install dua hal dibawah ini:
- Python versi 3.6
- PIP untuk Python 3 (Library instalasi Python, ya semacam NPM di NodeJS laah)
PIP terdapat dua versi, yang versi 2.7 dan 3.6, jadi usahakan untuk cari PIP yang untuk versi Python 3 alias 3.6 ya!
Windows
https://www.python.org/downloads/release/python-360/
Lengkapnya untuk cara install PIP dan Python 3.6 di windows cek disini https://phoenixnap.com/kb/how-to-install-python-3-windows
Ubuntu
sudo apt-get update
sudo apt-get install python3.6
sudo apt-get install python3-pip
sudo apt-get install python3-venv
Sebelum lanjut kita buat dulu folder belajar terlebih dahulu, kalo saya membuat folder bernama python, didalam python buat lagi folder bernama flask abis itu didalam folder flask kita buat lagi nama foldernya belajar-flask.
Sekarang masuk kedalam folder belajar-flask. Kalo udah, kita langsung caw. Sekarang kita buat dulu virtual env.
Pada Python 3, venv udah disupport alias di built didalam packagenya jadi kita tinggal buat aja dengan memasukkan command dibawah ini:
python3 -m venv [namafolder]
contoh:
python3 -m venv virtualenv
Hasil:
Sekarang kita udah berhasil mengisolasi environment python kita dari komputer kita dan dimasukkan kedalam sebuah virtual environment, anggap aja ya kaya docker gitu loh.
Abis itu segera masuk kedalam virtual env kalian dengan command
source virtualenv/bin/activate
source ini bukan sumber folder ya, emang beneran ditulis source.
Sekarang kita udah masuk ke virtual env kita, saatnya untuk mulai bermain flask.
Kita install flask dulu
pip install flask
Udah selesai? Kita coba dulu yuk buat folder bernama app. Fungsinya untuk memasukkan semua logic flask di projek kita.
Sekarang buka Vistud Code kalian, saya sarankan install kedua extension dibawah ini:
flask-snippets untuk memudahkan kita memasukkan autocomplete command dari flask, dan Jinja2 snippet kita gunakan kalo kita mau pake tampilan HTML template dari Flask. Kalo Laravel pakenya blade nah si Flask juga punya namanya Jinja, inget ya Jinja, bukan Ninja, apalagi Tinja 😢
Oke sekarang kita coba ya buat flasknya, open folder belajar-flask kalian. Kira-kira strukturnya seperti gambar dibawah ini.
didalam folder app, kita buat file baru bernama __init__.py dan masukkan kode dibawah ini:
from flask import Flask #Memanggil library Flask
app = Flask(__name__) #Untuk menjelaskan nama modul yang digunakan, sehingga ketika folder lain memanggil folder app akan otomatis teridentifikasi.
from app import routes #Memanggil file routes (akan segera dibuat)
Setelah itu mari buat file baru bernama routes.py masih didalam folder app.
from app import app
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"
Sekarang keluar dari folder app, buat satu file baru bernama belajar main.py, dan masukkan kode dibawah.
from app import app
Masih inget kan nama folder kita di aplikasi ini namanya app? Nah from app menandakan kita akan mengambil file dari folder app, import app menandakan kita akan mengimport seluruh file yang ada dari folder app. Kamu juga bisa ganti kok misalnya from app import core, caranya dengan mengubah variable app yang ada didalam __init__.py menjadi core.
Namun jeleknya ya kalian harus ubah semua yang dari from app import core, termasuk pada routes yang menggunakan @app harus diganti menjadi @core. Ribet kan? Udah app aja jangan diganti-ganti xixixixi. 😆
Struktur folder kita sekarang menjadi seperti ini:
Kalo udah silahkan masukkin command dibawah untuk ngasitau ke virtual env kita bahwa default flask app kita ya si main.py.
export FLASK_APP=main.py
Sekarang jalanin deh yuk aplikasinya
flask run
Udah works? Mantap gan!
Sekarang kita ngobrol env di Flask dulu. Kalo di Laravel mereka punya .env Flask juga punya loh, gokil ya, jauh sebelum Laravel dibentuk Flask udah punya duluan.
Kenapa harus buat ini? Jadi kalo misalkan environment variable itu sessionnya akan terputus kalo kita buat terminal baru, nah kalo kita masuk lagi kita harus jalanin export FLASK_APP=main.py
lagi, ribet kan kalo tiap masuk ke virtualenv di terminal baru harus gitu? Nah makanya kita buat file env di flask gunanya kalo kita keluar dan masuk ngga ribet-ribet lagi gan.
Caranya install dulu library-nya.
pip install python-dotenv
Kalo udah buat file .flaskenv di root folder dan masukkan code dibawah.
FLASK_APP=main.py
Masih bingung juga root folder? Cape deh gan, nih liat.
Sekarang agan tinggal jalanin flask run seperti biasanya dan flask akan otomatis mencari file .env atau .flaskenv deh, kebutuhan .env agan udah terpenuhi!
Tutorial ini diambil dari https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world
Silahkan kalo mau ngulik sendiri mampir ke Blog Miguel Grinberg, beliau suhu dan master Flask yang cukup terkenal, saya kebetulan dah baca blog itu dari 2015 dan kembali lagi ngulik di 2019 hehehe, masih awet aja tuh blog xixixi.