Przejdź do głównej treści

REST - Usługi sieciowe

Wprowadzenie​

Żądania REST to adresy online, które zwracają informacje o danych przetwarzanych na serwerze, zawierającym logikę biznesową danych wymagających bezpieczeństwa i niezawodności, z integracją z bazą danych.

Więcej o REST

Budowa API REST odbywa się na podstawie usług Netuno.

ALL​

Aby utworzyć usługę w Netuno, która odpowiada na dowolny typ metody HTTP:

  • 📂 server/services/moj-serwis.js

W przeglądarce ta usługa będzie wykonywana dla wszystkich typów żądań pod adresem:

GET​

Adresy typu GET są zwykle używane do operacji listowania lub pobierania danych.

Aby utworzyć usługę w Netuno, która odpowiada tylko na metodę GET, użyj jednej z następujących form:

  • 📂 server/services/lista/get.js
  • 📂 server/services/lista.get.js

W przeglądarce ta usługa będzie wykonywana tylko dla żądania GET pod adresem:

POST​

Adresy typu POST są zwykle używane do operacji tworzących lub generujących nowe dane.

Aby utworzyć usługę w Netuno, która odpowiada tylko na metodę POST, utwórz plik kodu, używając jednej z następujących form:

  • 📂 server/services/utworz/post.js
  • 📂 server/services/utworz.post.js

Ta usługa będzie wykonywana tylko dla żądania POST pod adresem:

PUT​

Adresy typu PUT są zwykle używane do operacji zmieniających rekordy danych.

Aby utworzyć usługę w Netuno, która odpowiada tylko na metodę PUT, utwórz plik kodu, używając jednej z następujących form:

  • 📂 server/services/zapisz/put.js
  • 📂 server/services/zapisz.put.js

Ta usługa będzie wykonywana tylko dla żądania PUT pod adresem:

DELETE​

Adresy typu DELETE są zwykle używane do operacji usuwających rekordy danych.

Aby utworzyć usługę w Netuno, która odpowiada tylko na metodę DELETE, utwórz plik kodu, używając jednej z następujących form:

  • 📂 server/services/usun/delete.js
  • 📂 server/services/usun.delete.js

Ta usługa będzie wykonywana tylko dla żądania DELETE pod adresem:

OPTIONS​

Podczas integracji z frontendem, w procesie walidacji CORS, przeglądarka wykonuje wywołanie typu OPTIONS.

Więcej o CORS.

Aby utworzyć usługę w Netuno, która odpowiada tylko na metodę OPTIONS, utwórz plik kodu, używając jednej z następujących form:

  • 📂 server/services/wylistuj/options.js
  • 📂 server/services/wylistuj.options.js

Należy go zaimplementować dla wszystkich usług integrowanych z zewnętrznym frontendem, takim jak strona internetowa.

Zwykle używany kod:

_out.json(_val.map().set("result", true))

Ta usługa będzie wykonywana dla żądania OPTIONS pod adresem:

Klienci i wykonywanie testów​

Aby wykonywać testy usług dla konkretnego typu metody, możesz użyć dedykowanych programów do testowania API REST, takich jak:

CURL​

Za pomocą polecenia curl w terminalu możesz wykonać dowolny typ testu.

Z konsoli/wiersza poleceń wyślij żądanie GET:

curl http://localhost:9000/services/zachowaj

Za pomocą -X możesz określić typ metody:

curl -X POST -F 'imie=Test' -F 'email=email@przyklad.com' http://localhost:9000/services/zachowaj

Parametr -F wysyła z Content-Type: multipart/form-data

Inny sposób wysyłania parametrów:

curl -X POST -d 'imie=Test' -d 'email=email@przyklad.com' http://localhost:9000/services/zachowaj

Można je połączyć w następujący sposób:

curl -X POST -d 'imie=Test&email=email@przyklad.com' http://localhost:9000/services/zachowaj

Parametr -d wysyła z Content-Type: application/x-www-form-urlencoded

JSON​

Aby wysłać w formacie JSON, należy określić typ zawartości:

curl -X POST -H "Content-Type: application/json" \
-d '{"imie": "Test", "email": "email@przyklad.com"}' \
http://localhost:9000/services/zachowaj

-H definiuje parametryzację nagłówka (HEADER)

Przesyłanie plików​

Aby przesłać pliki:

curl -X POST -F 'obraz=@/home/uzytkownik/plik.jpg' http://localhost:9000/services/zachowaj

Klient usług - NPM​

Aby ułatwić integrację z frontendem, udostępniono moduł NPM:

Polecenie instalacji: npm i -S @netuno/service-client

Przy definiowaniu adresu usług, np.:

_service.config({
prefix: 'http://localhost:9000/services/'
});

Możesz wykonywać usługi zintegrowane z frontendem, na przykład:

_service({
url: "/services/moj-serwis",
method: 'POST',
data: { parametr1: "1", parametr2: "2" },
success: (odpowiedz) => {
if (odpowiedz.json) {
console.log("Odpowiedź usługi", odpowiedz.json);
}
},
fail: (blad) => {
console.log("Błąd usługi", blad);
}
});

Podsumowanie​

Obsługiwane jest ograniczanie usług tylko do zamierzonego typu metody HTTP.

Integrację z frontendem można wykonać na najniższym poziomie za pomocą fetch.

Aby przyspieszyć i ustandaryzować implementację, udostępniono moduł NPM @netuno/service-client.