W poniższym poradniku zobaczysz, jak stworzyć podstawy aplikacji internetowej przy użyciu Node.js razem z Redis. Magazyn danych Redis jest szeroko stosowany jako baza danych do buforowania, a także do zarządzania aplikacjami, które wymagają wymiany wiadomości w czasie rzeczywistym.
Twoja przykładowa aplikacja będzie odpowiadać na wywołania REST, umożliwiając klientowi zapisanie i odczytanie archiwum książek.
Express będzie używany jako platforma sieciowa do obsługi żądań HTTP, podczas gdy Redis pozwoli na trwałe zapisywanie informacji na dysku.
Aby rozpocząć, połącz się z serwerem Ubuntu 20.04 za pośrednictwem połączenia SSH. Jeśli jeszcze tego nie zrobiłeś, postępuj zgodnie z naszym przewodnikiem, aby bezpiecznie łączyć się za pomocą protokołu SSH. W przypadku serwera lokalnego przejdź do następnego kroku i otwórz terminal swojego serwera.
Instalacja Redis
Najpierw zaktualizuj repozytorium pakietów za pomocą następującego polecenia:
$ sudo apt update
Następnie zainstaluj pakiet „redis-server”:
$ sudo apt install redis-server -y
Aby przetestować instalację i poznać pierwsze instrukcje Redis, połącz się z bazą danych za pomocą polecenia:
$ redis-cli
Pierwszym poleceniem, którego należy się nauczyć, jest SET: to polecenie pozwala na stałe ustawić wartość klucza w bazie danych.
Następnie użyj polecenia, aby przypisać wartość „hello world” do klucza „testKey”:
> SET testKey “hello world”
Klucze Redis umożliwiają przechowywanie dowolnego typu danych, w tym ciągów znaków, liczb lub sekwencji binarnych, takich jak obrazy i pliki. Należy jednak wiedzieć, że maksymalny rozmiar klucza Redis nie może przekraczać 512 Mb.
Aby uzyskać aktualną wartość klucza Redis, użyj polecenia GET, po którym następuje nazwa klucza:
> GET testKey
“hello world”
Kolejną przydatną instrukcją, która może się pojawić, jest INCR: pozwala on zwiększyć aktualny klucz jednostki, jak pokazano poniżej.
> SET testKey 100
> INCR testKey
Ponownie odczytując wartość testKey, klucz zwróci 101:
> GET testKey
101
Następnie usuń klucz używany do tych testów za pomocą instrukcji DEL:
> DEL testKey
Teraz zakończ sesję poleceniem:
> QUIT
Instalacja Node.js i npm
Najpierw zainstaluj Node.js i menedżera pakietów npm za pomocą następującego polecenia:
$ sudo apt install nodejs npm -y
Aby stworzyć aplikację zgodną ze standardami wyznaczonymi przez Node.js, zainicjuj podstawową konfigurację npm.
Następnie utwórz folder dla projektu (w tym przykładzie o nazwie „książki”) i przenieś się do niego.
$ mkdir books
$ cd books
Uruchom następujące polecenie konsoli w nowo utworzonym folderze:
$ npm init
Uruchomiony zostanie kreator, który utworzy plik package.json, który będzie zawierał wszystkie podstawowe informacje o projekcie i jego zależnościach.
Użyj sugerowanych wartości, aby kontynuować, jak pokazano poniżej:
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install ` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (books)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to package.json:
{
"name": "books",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this OK? (yes) yes
Odpowiedz yes, aby zakończyć procedurę.
Następnie kontynuuj, instalując dwa główne moduły:
$ npm install --save express ioredis
Dodając parametr --save, npm ma zaktualizować plik package.json, dodając te dwie zależności do projektu.
Stworzenie aplikacji Express
W tym momencie kontynuuj ustawianie punktu wejścia dla aplikacji Express, tworząc plik index.js w tym samym katalogu, co package.json.
Użyj swojego ulubionego edytora tekstu, aby wkleić następujące treści do nowo utworzonego pliku:
/**
* First, include the two previously installed modules
*
*/
var express = require('express');
var Redis = require( 'ioredis' );
const redis = new Redis();
/**
* Initialize a new Express application
*/
var app = express();
/**
* Use the main server root to list all the books
*
*/
app.get('/', function (req, res) {
redis.lrange( "books" , 0, -1 ).then( rows => {
/**
* Send all the lines found in the “books” chart
*/
res.send( rows );
});
});
/**
* Then, to save it, use the path /save/ followed by the title and the author of the book.
* /save/ seguito dal titolo e dall'autore
*/
app.get('/save/:title/:author', function (req, res) {
/**
* Prepare the data in object format
*/
var data = { title: req.params.title, author: req.params.author };
/**
* And insert the object in text format in a “books” list
*/
redis.lpush( "books" , JSON.stringify( data ) ).then( () => {
res.send(true);
});
});
/**
* Then, start the listening server on the port 8001
*/
app.listen (8001, function () {
console.log('Books server ready');
});
W tym momencie uruchom serwer poleceniem:
$ node index.js
Za pomocą ulubionej przeglądarki odwiedź następujący adres URL. Upewnij się, że zmieniłeś adres IP na adres swojego serwera i użyj portu 8001:
http://
SERVER_IP:8001/
Jeśli wszystko działa poprawnie, Twoja aplikacja internetowa odpowie:
[]
Następnie użyj przeglądarki, aby zapisać pierwsze 3 książki, odwiedzając następujące adresy URL:
http://SERVER_IP:8001/save/Il%20Decamerone/Giovanni%20Boccaccio
http://SERVER_IP:8001/save/Il%20fu%20Mattia%20Pascal/Luigi%20Pirandello
http://SERVER_IP:8001/save/Il%20barone%20rampante/Italo%20Calvino
Uwaga: Pamiętaj, aby zawsze zastępować adres „SERVER_IP” adresem swojego serwera.
Dlatego upewnij się, że książki zostały zapisane, przechodząc do poprzednio używanego adresu URL:
http://SERVER_IP:8001/
Serwer powinien odpowiedzieć następującą treścią:
[{"title":"Il Decamerone","author":"Giovanni Boccaccio"},{"title":"Il fu Mattia Pascal","author":"Luigi Pirandello"},{"title":"Il barone rampante","author":"Italo Calvino"}]
Jeśli tak, to poprawnie wykonałeś wszystkie instrukcje i utworzyłeś swoją pierwszą działającą aplikację internetową w Node.js i Redis. Nowo utworzona aplikacja będzie odpowiadać na wywołania REST i umożliwi użytkownikom zapisywanie i czytanie archiwum książek.