Bir bosilgan tugma — bazagacha bo'lgan yo'l
Endi barcha qismlarni (frontend, backend, baza) bilib oldik. Keling, foydalanuvchi saytda bitta amal bajarganda — masalan, "Turnirga yozilish" tugmasini bosganda — aniq nima sodir bo'lishini, qadam-baqadam ko'ramiz.
1Misol: "Turnirga yozilish" tugmasi bosilganda
- 1. Talaba tugmani bosadi
Brauzerda (frontend, Next.js) "Ro'yxatdan o'tish" tugmasi bosiladi. - 2. Frontend so'rov yuboradi
Brauzer internet orqali backend'ga "so'rov" (so'rovnoma) jo'natadi: "shu talabani shu turnirga qo'sh". Bu so'rov API deb ataladigan "til" orqali yuboriladi. - 3. Backend tekshiradi
Django (backend) so'rovni qabul qiladi: talaba haqiqatan tizimga kirganmi, turnirda bo'sh joy bormi, u allaqachon yozilmaganmi — hammasini tekshiradi. - 4. Baza yangilanadi
Hammasi to'g'ri bo'lsa, Django ma'lumotlar bazasiga yangi qator qo'shadi: "bu talaba — shu turnir ishtirokchisi". - 5. Backend javob qaytaradi
"Muvaffaqiyatli!" degan javob frontend'ga qaytariladi. - 6. Frontend ekranni yangilaydi
Talaba ekranida darhol "Siz ro'yxatdan o'tdingiz" degan xabar va yangilangan holat ko'rinadi.
Bularning barchasi — bir soniyadan kamroq vaqtda sodir bo'ladi.
2"API" — ofitsiant, deb eslang
API (Application Programming Interface) — frontend va backend'ning bir-biri bilan gaplashish usuli/tili. Xuddi restoran ofitsianti kabi: mijoz (frontend) menyudan biror narsa so'raydi, ofitsiant (API) buyurtmani oshxonaga (backend) yetkazadi, tayyor taomni qaytarib olib keladi. Mijoz oshxonada nima bo'layotganini bilishi shart emas — u faqat ofitsiant bilan gaplashadi.
3To'liq sxema
4TOBB ETÜ Sport'da ikkalasi "bitta uyda"
Odatda frontend va backend ikki xil serverda, hatto ikki xil kompaniyada joylashishi mumkin. TOBB ETÜ Sport'da esa ikkalasi ham bitta Vercel loyihasida birga joylashtirilgan ("Multiple Services" usuli) — bu tezlikni oshiradi va boshqarishni osonlashtiradi, chunki bitta manzil (tobbsports.vercel.app) ostida ikkalasi ham ishlaydi:
| Manzil qolipi | Kim javob beradi |
|---|---|
tobbsports.vercel.app/, /sport, /turnirlar... | Frontend (Next.js) |
tobbsports.vercel.app/api/... | Backend (Django) |