DataLens

Aplikasi Flask pertamamu dan route

Buat aplikasi Flask, hubungkan URL ke fungsi Python dengan @app.route, lalu kirim request ke aplikasinya.

Level: Dasar · 7 menit baca

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Idenya

Di modul sebelumnya kamu sudah melihat bahwa seluruh tugas web server adalah: menerima request, mengirim balik response. Flask adalah framework Python kecil yang menangani urusan teknisnya (membaca request, menulis response, berbicara HTTP) sehingga kamu cukup menulis bagian yang menarik: apa yang harus terjadi saat seseorang mengunjungi URL ini?

Flask menyebut dirinya micro-framework. Ia memberimu routing, request dan response, template, dan tidak banyak lagi. Kamu hanya menambahkan apa yang kamu butuhkan, sehingga Flask sangat cocok untuk mempelajari cara kerja web yang sebenarnya, juga untuk membuat API kecil dan tool internal di kantor.

Aplikasi Flask paling kecil

Ini aplikasi web lengkap dalam tujuh baris. Saat seseorang mengunjungi halaman utama situsnya, aplikasi ini menjawab dengan pesan sambutan. Sekecil apa pun, setiap aplikasi Flask yang akan kamu bangun punya bagian-bagian yang sama ini:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "Selamat datang di Toko Kita!"

Baris demi baris:

Itu sudah aplikasi web yang lengkap. Di situs ini, tekan Run, lalu buka tab Browser di bawah editor dan tekan Send: ia me-request / dari aplikasimu dan menampilkan response-nya.

Menjalankannya di komputermu

Simpan kodenya sebagai app.py, tambahkan Flask ke proyekmu dengan uv, lalu jalankan development server:

uv add flask
uv run flask --app app run --debug

Flask mencetak Running on http://127.0.0.1:5000. Buka alamat itu di browser dan kamu akan melihat pesanmu. --debug menyalakan reloader (server restart saat kamu menyimpan file) dan menampilkan halaman error yang detail. Pakai saat development, jangan pernah di server publik sungguhan.

Catatan

Situs ini tidak bisa membuka port jaringan sungguhan, jadi tab Browser mengirim request langsung ke objek aplikasimu, memakai test client bawaan Flask. Request dan response-nya sama persis dengan yang diterima browser, hanya tanpa jaringan di antaranya.

Route: memetakan URL ke fungsi

Route menghubungkan path URL ke view function. Tambahkan sebanyak yang kamu mau:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "Selamat datang di Toko Kita!"

@app.route("/about")
def about():
    return "Toko Kita sells coffee, kitchen gear and desk accessories."

@app.route("/contact")
def contact():
    return "Email us at [email protected]"

Sekarang /about dan /contact juga berfungsi. Kalau kamu me-request path yang tidak punya route, misalnya /careers, Flask otomatis mengembalikan 404 Not Found untukmu.

Beberapa pedoman praktis:

Mengembalikan HTML

View bisa mengembalikan HTML berupa string, dan browser menampilkannya sebagai halaman:

@app.route("/")
def home():
    return "<h1>Toko Kita</h1><p>Fresh coffee, delivered.</p>"

Itu tidak masalah untuk sebuah judul, tetapi string HTML yang panjang di dalam Python cepat berantakan. Di modul template kamu akan memindahkan HTML ke file terpisah, yang merupakan cara yang rapi. Untuk sekarang, string pendek sudah pas untuk belajar.

Isi sebuah response

Saat view-mu mengembalikan string, Flask membungkusnya menjadi HTTP response lengkap dengan tiga bagian:

BagianContohArti
Status code200 OKBerhasil atau tidak? 200 berarti sukses, 404 berarti tidak ditemukan.
HeadersContent-Type: text/htmlInformasi tambahan, misalnya jenis data body-nya.
BodySelamat datang di Toko Kita!Isi yang sebenarnya.

Kamu bisa mengembalikan status code lain dengan menambahkannya setelah body, sebagai tuple:

@app.route("/old-shop")
def old_shop():
    return "This page has moved to /", 410

410 Gone artinya "ini dulu ada tetapi sengaja dihapus". Kamu akan mempelajari status code yang penting di modul berikutnya.

Mengetes aplikasi dengan test client

Mengklik ke sana kemari di browser itu lambat dan mudah terlupa. Flask punya test client yang mengirim request dari Python dan memberimu response untuk diperiksa. Beginilah aplikasi Flask profesional dites, dan begini juga cara kerja pengecekan di situs ini.

client = app.test_client()
response = client.get("/about")
print(response.status_code)
print(response.get_data(as_text=True))
200
Toko Kita sells coffee, kitchen gear and desk accessories.

Mengapa ini penting untuk kode yang bersih

Route adalah janji: "URL ini mengerjakan satu hal ini". Jaga view function tetap kecil dan fokus. Kalau sebuah view mulai mengerjakan lima tugas (memuat data, menghitung, memformat, mengirim email), pindahkan tugas-tugas itu ke fungsi biasa dan panggil dari view. View yang kecil mudah dibaca, mudah dites dengan test client, dan mudah diubah tanpa merusak bagian lain situs.

Rangkuman

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Berikutnya: Dynamic route dan parameter URL →