Moderní webové aplikace nejsou jen statické stránky. Díky propojení backendu s frontendem pomocí AJAX a REST API můžeme vytvářet dynamická uživatelská rozhraní, která načítají a odesílají data bez nutnosti obnovy stránky. V tomto článku si ukážeme, jak efektivně integrovat Java REST služby s frontendem pomocí JavaScriptu.
AJAX (Asynchronous JavaScript and XML) umožňuje komunikaci s backendem na pozadí. Nejjednodušší způsob je využití funkce fetch()
:
fetch('http://localhost:8080/api/products') .then(response => response.json()) .then(data => { console.log(data); }) .catch(error => console.error('Chyba:', error));
Alternativně lze použít XMLHttpRequest
pro větší kompatibilitu, ale fetch()
je dnes preferovaným řešením.
Po načtení dat ve formátu JSON můžeme pomocí JavaScriptu dynamicky generovat HTML strukturu. Například tabulku:
fetch('/api/products') .then(res => res.json()) .then(products => { let table = '<table><tr><th>ID</th><th>Název</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; });
Pro vizualizaci dat lze využít i knihovny jako Chart.js nebo Google Charts.
Pokud potřebujeme odeslat formulářová data na server (např. nový produkt), použijeme:
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 byl přidán')) .catch(error => console.error('Chyba:', error)); });
Nezapomeňte implementovat validaci – jak na straně klienta, tak i na serveru, aby byla data konzistentní a bezpečná.
Při chráněném API musíte odesílat autentizační token v hlavičce požadavku:
fetch('/api/products', { method: 'GET', headers: { 'Authorization': 'Bearer ' + localStorage.getItem('token') } });
Token lze uložit do localStorage
nebo sessionStorage
a používat ho ve všech požadavcích. Vždy používejte HTTPS a zabraňte XSS útokům.
Chybové stavy je nutné správně ošetřit, aby uživatel nebyl zaskočen:
fetch('/api/products') .then(response => { if (!response.ok) { throw new Error('Chyba HTTP: ' + response.status); } return response.json(); }) .then(data => { /* práce s daty */ }) .catch(error => { console.error('Došlo k chybě:', error.message); alert('Nastala chyba při komunikaci se serverem.'); });
Používejte status kódy (např. 400, 401, 403, 500) k informování klienta o problémoch a logujte chyby i na backendu.
AJAX a REST sú silnou kombinací pro tvorbu moderních aplikací. Umožňují vytvářet plynulé rozhrania a okamžité reakce na vstupy používateľov. Porozumění ich vzájomnému prepojeniu vám umožní tvoriť robustné a profesionálne aplikácie.
Všechny tyto postupy si můžete prakticky vyzkoušet v kurzu Java REST služby s Hibernate a JPA, kde se naučíte, jak vytvořit propojený frontend a backend v Java EE.
Viac informacií preberáme na kurze: