Moderné webové aplikácie už dávno nie sú iba statickými stránkami. Vďaka prepojeniu backendu a frontendu pomocou AJAX a REST API môžeme vytvárať dynamické používateľské rozhrania, ktoré načítavajú a odosielajú údaje bez potreby obnovy stránky. V tomto článku sa dozviete, ako efektívne integrovať Java REST služby s frontendovou logikou pomocou JavaScriptu.
AJAX (Asynchronous JavaScript and XML) je technológia, ktorá umožňuje komunikáciu s backendom bez obnovy stránky. Najjednoduchšou formou je použitie funkcie fetch():
fetch('http://localhost:8080/api/products')
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => console.error('Chyba:', error));
Alternatívne môžete použiť klasický XMLHttpRequest, ktorý poskytuje vyššiu kompatibilitu so staršími prehliadačmi, ale dnes je fetch() preferovaný pre svoju jednoduchosť a čitateľnosť.
Po načítaní JSON dát môžeme dynamicky vytvárať HTML prvky. Príklad tabuľky:
fetch('/api/products')
.then(res => res.json())
.then(products => {
let table = '<table><tr><th>ID</th><th>Názov</th><th>Cena</th></tr>';
products.forEach(p => {
table += `<tr><td>${p.id}</td><td>${p.name}</td><td>${p.price}</td></tr>`;
});
table += '</table>';
document.getElementById('productTable').innerHTML = table;
});
Rovnako môžete tieto dáta zobraziť ako grafy pomocou knižníc ako Chart.js alebo Google Charts.
Ak potrebujete odoslať údaje z formulára (napr. nový produkt), môžete použiť nasledovný kód:
document.getElementById('productForm').addEventListener('submit', function(e) {
e.preventDefault();
const data = {
name: document.getElementById('name').value,
price: document.getElementById('price').value
};
fetch('/api/products', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(res => res.json())
.then(response => alert('Produkt bol pridaný'))
.catch(error => console.error('Chyba:', error));
});
Pred odoslaním údajov odporúčame implementovať klientsku aj serverovú validáciu – napr. kontrolu, že meno nie je prázdne a cena je číselná.
Ak je API chránené, musíte posielať autentifikačný token v hlavičke požiadavky. Napríklad:
fetch('/api/products', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + localStorage.getItem('token')
}
});
Token môžete uložiť do localStorage po prihlásení a obnovovať ho podľa potreby. Dbajte však na to, aby ste používali HTTPS a ochránili sa proti XSS útokom.
Pri práci s REST API je dôležité odchytiť možné chyby, ktoré môžu vzniknúť pri volaniach:
fetch('/api/products')
.then(response => {
if (!response.ok) {
throw new Error('HTTP chyba ' + response.status);
}
return response.json();
})
.then(data => { /* práca s dátami */ })
.catch(error => {
console.error('Nastala chyba:', error.message);
alert('Niečo sa pokazilo. Skúste to znova.');
});
Odporúčame implementovať aj používateľsky prívetivé hlásenia chýb, ktoré pomôžu s orientáciou (napr. 401 - nepovolený prístup, 500 - chyba servera).
Integrácia Java REST API s frontendovým kódom pomocou AJAX requestov otvára vývojárom nové možnosti tvorby moderných a interaktívnych aplikácií. Kľúčom k úspechu je pochopenie princípov JSON výmeny dát, zabezpečenia komunikácie a správneho spracovania chýb.
Všetky tieto princípy si môžete precvičiť na praktickom kurze Java REST služby s Hibernate a JPA, kde sa naučíte vytvoriť funkčnú REST službu a prepojiť ju s dynamickým frontendom.
Viac informacií preberáme na kurze: