Tavs šīs stundas izaicinājums: Savienot HTML/CSS/JS priekšgalu ar Flask backend, lai izveidotu pilnvērtīgu lietotni.
JavaScript fetch() API ļauj nosūtīt HTTP pieprasījumus no pārlūka uz serveri.
// GET pieprasījums
async function ielādētRezultātus() {
const r = await fetch("http://localhost:5000/api/rezultati");
if (!r.ok) {
console.error("Kļūda:", r.status);
return;
}
const dati = await r.json();
console.log(dati);
}
// POST ar JSON
async function pievienot(vards, punkti) {
const r = await fetch("/api/rezultati", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ vards, punkti })
});
return await r.json();
}
CORS: Ja frontend ir uz http://localhost:8080, bet backend uz :5000, pārlūks bloķē pieprasījumus drošības dēļ. Risinājums Flask pusē:
from flask_cors import CORS
CORS(app) # atļauj visiem; produkcijā konkrēti norādi atļautos domēnus
Flask kalpo gan API, gan HTML lapu.
static/ un tajā index.html ar pamata struktūru.@app.route("/"), kas atgriež send_from_directory("static", "index.html").http://localhost:5000/ rāda HTML.style.css un spele.js failus.Lasa rezultātus un parāda tabulā.
const dati = await (await fetch("/api/rezultati")).json();<tr> elementus tabulā.Ielādējas... kamēr fetch notiek.Lietotājs ievada datus, kas saglabājas serverī.
form.addEventListener("submit", e => { e.preventDefault(); ... })fetch("/api/rezultati", { method: "POST", ... }).Polling vai WebSocket.
setInterval(() => ielādētRezultātus(), 5000) — atjaunina ik 5 sek.e.preventDefault() — vienmēr pirmais POST handler-ī.r.json() mestu izņēmumu.