Sari la conținutul principal

Serviciu

Cu Netuno puteți crea servicii web și construi orice tip de API-uri REST complexe pentru integrarea datelor între sisteme.

Ce este un serviciu web?

Un serviciu web permite sistemelor să facă schimb de informații online într-un mod standardizat. În Netuno, fiecare fișier din server/services/ devine automat un endpoint accesibil prin HTTP.

De ce să folosiți servicii web?​

Utilizarea serviciilor asincrone aduce beneficii clare pentru experiența utilizatorului:

  • Încărcare mai rapidă: serverul livrează structura vizuală a paginii imediat, fără să aștepte procesarea tuturor datelor.
  • Date dinamice la cerere: frontendul solicită doar datele necesare, atunci când este necesar.
  • Integrare între sisteme: un serviciu creat în Netuno poate fi consumat de orice aplicație externă (mobilă, alt sistem web etc.).
  • Experiență mai bună pentru utilizator: utilizatorul nu trebuie să aștepte procesarea completă a paginii înainte de a vedea ceva pe ecran.

Cerințe preliminare​

Înainte de a începe, asigurați-vă că:

  • Netuno este instalat și rulează local.
  • Aplicația demo a fost creată conform descrierii din Creați aplicația.
  • Există date înregistrate în Sarcini și asociate cu Înregistrări (necesar pentru ca răspunsul să nu fie gol).

Configurați editorul de cod​

Pentru a crea și edita servicii în Netuno, utilizați un editor de cod preferat. Recomandăm Visual Studio Code deoarece este gratuit, ușor și foarte intuitiv, însă orice editor compatibil cu JavaScript/Python/Groovy va funcționa normal.

Deschideți aplicația demo​

  1. Deschideți Visual Studio Code.
  2. Faceți clic pe pictograma Fișiere din panoul lateral stâng.
  3. Selectați Deschideți folderul (File > Open Folder).
  4. Navigați până la folderul de instalare Netuno.
  5. Selectați directorul: apps/demo
  6. Faceți clic pe Deschideți.

Structura de foldere a aplicației demo va fi încărcată în panoul din stânga.

Creați serviciul​

Serviciile sunt procesate pe partea de server. Pentru a crea un serviciu nou:

  1. În panoul de fișiere, extindeți structura până când găsiți folderul server/services/.
  2. Faceți clic dreapta pe folderul services.
  3. Selectați Fișier nou New File.
  4. Denumiți fișierul în funcție de limbajul pe care doriți să îl utilizați:
  • server/services/lucratori.js
server/services/lucratori.js
/**
*** Transformă datele interogării în ieșire JSON.
*/
const dbInregistrari = _db.query(`
SELECT DISTINCT
lucrator.nume, SUM(DATEDIFF(HOUR, inregistrare.inceput, inregistrare.sfarsit)) AS total
FROM lucrator INNER JOIN inregistrare
ON lucrator.id = inregistrare.lucrator_id
WHERE lucrator.activ = true AND inregistrare.activ = true
GROUP BY lucrator.nume
ORDER BY total ASC
`);

const lista = _val.list();

for (const dbInregistrare of dbInregistrari) {
lista.add(
_val.map()
.set("nume", dbInregistrare.getString("nume"))
.set("total", dbInregistrare.getInt("total"))
);
}

_out.json(lista);

Implementați serviciul adăugând codul de mai jos în fișierul creat. Acest serviciu interoghează baza de date și returnează o listă de lucrători cu totalul orelor înregistrate, în format JSON.

Înțelegerea codului​

Obiect/MetodăDescriere
_db.query()Execută o interogare SQL și returnează o listă de obiecte în format cheie-valoare (coloană → valoare).
_val.list()Creează o listă mutabilă pentru acumularea rezultatelor.
_val.map()Creează un obiect de mapare (cheie-valoare) pentru fiecare rând de rezultat.
_out.json()Serializează obiectul în JSON și trimite răspunsul la cererile HTTP.
Date necesare

Asigurați-vă că există date înregistrate în Sarcini și asociate cu Înregistrări. În caz contrar, endpointul va returna o listă goală [].

Rulați și testați serviciul​

Cu Netuno în execuție, accesați endpointul în browser:

Sfat pentru vizualizarea JSON

Recomandăm Firefox pentru testarea endpointurilor direct în browser, deoarece formatează și afișează răspunsul JSON într-un mod lizibil, cu evidențierea sintaxei. Alternativ, utilizați extensii precum JSON Viewer în Chrome sau instrumente precum Postman pentru teste mai avansate.

Răspunsul așteptat va fi un JSON similar cu:

[
{ "nume": "Ana Popescu", "total": 12 },
{ "nume": "Mihai Ionescu", "total": 28 },
{ "nume": "Ion Dumitrescu", "total": 45 }
]

Pașii următori​

Acum că serviciul dumneavoastră funcționează, puteți:

  • 📄 Interfață și design — integrați acest serviciu în frontendul aplicației.
  • 📚 Biblioteca de servicii — explorați obiectele _db, _val, _out și altele disponibile în Netuno.
  • 🔗 Adăugați autentificare și control de acces la serviciul dumneavoastră.