REST - Servicii web
Introducere
Cererile REST sunt adrese online care returnează informații despre datele procesate pe server, unde se află logica de afaceri a datelor ce necesită securitate și fiabilitate, cu integrarea bazei de date.
Mai multe despre REST
Construirea API-ului REST se bazează pe Serviciile Netuno.
ALL
Pentru a crea un serviciu în Netuno care să răspundă la orice tip de metodă HTTP:
📂 server/services/serviciul-meu.js
În browser, acest serviciu va fi executat pentru toate tipurile de cereri la adresa:
GET
Adresele de tip GET sunt utilizate de obicei pentru operațiuni de listare sau de obținere a datelor.
Pentru a crea un serviciu în Netuno care să răspundă doar la metoda GET, utilizați una dintre aceste forme:
📂 server/services/lista/get.js📂 server/services/lista.get.js
În browser, acest serviciu va fi executat doar pentru cererea GET la adresa:
POST
Adresele de tip POST sunt utilizate de obicei pentru operațiuni care creează sau generează date noi.
Pentru a crea un serviciu în Netuno care să răspundă doar la metoda POST, creați fișierul de cod folosind una dintre aceste forme:
📂 server/services/creare/post.js📂 server/services/creare.post.js
Acest serviciu va fi executat doar pentru cererea POST la adresa:
PUT
Adresele de tip PUT sunt utilizate de obicei pentru operațiuni care modifică înregistrări de date.
Pentru a crea un serviciu în Netuno care să răspundă doar la metoda PUT, creați fișierul de cod folosind una dintre aceste forme:
📂 server/services/salvare/put.js📂 server/services/salvare.put.js
Acest serviciu va fi executat doar pentru cererea PUT la adresa:
DELETE
Adresele de tip DELETE sunt utilizate de obicei pentru operațiuni care elimină înregistrări noi de date.
Pentru a crea un serviciu în Netuno care să răspundă doar la metoda DELETE, creați fișierul de cod folosind una dintre aceste forme:
📂 server/services/eliminare/delete.js📂 server/services/eliminare.delete.js
Acest serviciu va fi executat doar pentru cererea DELETE la adresa:
OPTIONS
În integrarea cu frontend-ul, în timpul procesului de validare CORS, browserul efectuează apelul de tip OPTIONS.
Mai multe despre CORS.
Pentru a crea un serviciu în Netuno care să răspundă doar la metoda OPTIONS, creați fișierul de cod folosind una dintre aceste forme:
📂 server/services/listare/options.js📂 server/services/listare.options.js
Trebuie implementat pentru toate serviciile integrate într-un frontend extern, cum ar fi un site web.
Cod utilizat de obicei:
_out.json(_val.map().set("result", true))
Acest serviciu va fi executat pentru cererea OPTIONS la adresa:
Clienți și executarea testelor
Pentru a executa teste pe servicii cu un tip de metodă specific, puteți utiliza programe dedicate care efectuează teste pe API REST, cum ar fi:
CURL
Cu comanda curl în terminal puteți realiza orice tip de test.
Din consolă/linia de comandă trimiteți un GET:
curl http://localhost:9000/services/salvare
Cu -X puteți specifica tipul de metodă:
curl -X POST -F 'nume=Test' -F 'email=email@exemplu.com' http://localhost:9000/services/salvare
Parametrul
-Ftrimite folosind Content-Type:multipart/form-data
O altă modalitate de a trimite parametri:
curl -X POST -d 'nume=Test' -d 'email=email@exemplu.com' http://localhost:9000/services/salvare
Poate fi concatenat astfel:
curl -X POST -d 'nume=Test&email=email@exemplu.com' http://localhost:9000/services/salvare
Parametrul
-dtrimite folosind Content-Type:application/x-www-form-urlencoded
JSON
Pentru a trimite în format JSON, este necesar să specificați tipul de conținut:
curl -X POST -H "Content-Type: application/json" \
-d '{"nume": "Test", "email": "email@exemplu.com"}' \
http://localhost:9000/services/salvare
-Hdefinește parametrizarea antetului (HEADER)
Încărcare
Pentru a încărca fișiere:
curl -X POST -F 'imagine=@/home/utilizator/fisier.jpg' http://localhost:9000/services/salvare
Client de servicii - NPM
Pentru a realiza cu ușurință integrarea cu frontend-ul, este disponibil modulul NPM:
Comandă de instalare: npm i -S @netuno/service-client
La definirea adresei serviciilor, cum ar fi:
_service.config({
prefix: 'http://localhost:9000/services/'
});
Puteți executa servicii integrate cu frontend-ul, de exemplu:
_service({
url: "/services/serviciul-meu",
method: 'POST',
data: { parametru1: "1", parametru2: "2" },
success: (response) => {
if (response.json) {
console.log("Răspuns serviciu", response.json);
}
},
fail: (e) => {
console.log("Eroare serviciu", e);
}
});
Concluzie
Este suportată restricționarea serviciilor doar la tipul de metodă HTTP dorit.
Integrarea cu frontend-ul se poate face la cel mai jos nivel folosind fetch.
Pentru a accelera și standardiza implementarea, este disponibil modulul NPM @netuno/service-client.