În tutorialul anterior, am aflat ce arhitectură REST este, cele șase constrângeri direcționale ale REST, cum să înțelegeți metodele de solicitare HTTP și codurile de răspuns ale acestora și anatomia unui punct final API RESTful.
În acest tutorial, vom crea un server pentru ca API-ul nostru să trăiască în continuare. Puteți construi un API cu orice limbaj de programare și software de servere, dar vom folosi Node.js, care este implementarea back-end a JavaScript și Express, un cadru popular, minim pentru Node.
Prima noastră condiție este să vă asigurați că Node.js și npm sunt instalate la nivel global pe computer. Putem testa atât folosind -v
care va afișa versiunea. Deschideți promptul de comandă și tastați următoarele.
nod -v && npm -v
v10.8.0 6.2.0
Versiunile dvs. pot fi ușor diferite de ale mele, dar atât timp cât amândouă sunt acolo, putem începe.
Să creăm un director de proiect numit Express-api
și treci la el.
mkdir express-api && cd expres-api
Acum, că suntem în noul nostru director, putem iniția proiectul nostru cu comanda init.
npm init
Această comandă vă va solicita să răspundeți la câteva întrebări despre proiect, pe care le puteți completa sau nu. Odată ce configurarea este finalizată, veți avea o package.json fișier care arată astfel:
name: "express-api", "versiunea": "1.0.0", "descriere": "Node.js și Express REST API" "test": "ecou \" Eroare: nici un test specificat \ "&& ieșire 1", "autor": "Tania Rascia", "licență": "MIT"
Acum că avem pe noi package.json, putem instala dependențele necesare pentru proiectul nostru. Din fericire nu avem nevoie de prea multe dependențe, ci doar de cele patru enumerate mai jos.
Vom folosi instalare
comanda urmată de fiecare dependență pentru a finaliza configurarea proiectului nostru.
npm install body-parser exprima cererea mysql
Acest lucru va crea o Pachet-lock.json fișier și a node_modules directorul, și noastre package.json vor fi actualizate pentru a arăta astfel:
name: "express-api", "versiunea": "1.0.0", "descriere": "Node.js și Express REST API" "Tania Rascia", "licență": "MIT", "dependențe": "dependencies": "body" -parser ":" ^ 1.18.3 "," expres ":" ^ 4.16.3 "," mysql ":" ^ 2.16.0 "," request ":" ^ 2.88.0 "
Înainte de a începe instalarea unui server Express, vom configura rapid un server HTTP cu Node încorporat http
modul, pentru a obține o idee despre cum funcționează un server simplu.
Creați un fișier numit salut-server.js. Încărcați în http
modul, setați un număr de port (am ales 3001
) și creați serverul cu createServer ()
metodă.
// Construiește un server cu modul HTTP al Node const http = require ('http'); const port = 3001; const server = http.createServer ();
În articolul introductiv REST, am discutat ce solicitări și răspunsuri se referă la un server HTTP. Vom seta serverul nostru să se ocupe de o cerere și să afișeze adresa URL solicitată pe partea de server și să afișeze a Bună, server! mesajul către client în partea de răspuns.
server ** on ('request' ** (cerere, răspuns) => console.log ('URL: $ request.url');
În cele din urmă, vom spune pe serverul în care portul să asculte și să afișeze o eroare dacă există una.
// Start serverul server.listen (port, (error) => if (error) returna console.log ('Error: $ error'); '))
Acum, putem începe cu serverul nostru nodul
urmat de numele fișierului.
nodul hello-server.js
Veți vedea acest răspuns în terminal:
Serverul asculta pe portul 3001
Pentru a verifica dacă serverul rulează, mergeți la http: // localhost: 3001 /
în bara de adrese a browserului. Dacă totul funcționează corect, ar trebui să vedeți Bună, server! pe pagină. În terminalul dvs., veți vedea și adresele URL solicitate.
Adresa URL: / URL: /favicon.ico
Dacă ar trebui să navigați la http: // localhost: 3001 / salut
, ai vedea URL: / salut
.
De asemenea, putem folosi cURL pe serverul nostru local, care ne va arăta antetele și corpul exact care sunt returnate.
curl -i http: // localhost: 3001
HTTP / 1.1 200 OK Data: Miercuri, 15 Aug 2018 22:14:23 GMT Conexiune: pastrati-vii Content-Length: 14 Buna ziua, server!
Dacă închideți fereastra terminalului în orice moment, serverul va dispărea.
Acum, că avem o idee despre modul în care serverul, solicitarea și răspunsul lucrează împreună, putem rescrie acest lucru în Express, care are o interfață chiar mai simplă și caracteristici extinse.
Vom crea un fișier nou, app.js, care va fi punctul de intrare pentru proiectul nostru real. La fel ca în cazul serverului http original, vom avea nevoie de un modul și vom seta un port pentru a începe.
Creaza un app.js fișier și puneți următorul cod în el.
// Solicitați pachete și setați portul const expres = necesită ('express'); const port = 3002; const app = express ();
Acum, în loc să căutăm toate cererile, vom afirma în mod explicit că căutăm un a OBȚINE
cerere pe rădăcina serverului (/
). Cand /
primește o solicitare, vom afișa adresa URL solicitată și "Hello, Server!" mesaj.
app.get ('/', (cerere, răspuns) => console.log ('URL: $ request.url'); answer.send ('Hello, Server!');
În cele din urmă, vom porni serverul pe port 3002
cu asculta()
metodă.
// Porniți serverul const server = app.listen (port, eroare) => if (error) returna console.log ('Error: $ error'); console.log server.address (). port '););
Putem porni serverul cu nod app.js
așa cum am făcut înainte, dar putem, de asemenea, modifica script-uri
proprietate în nostru package.json fișier pentru a rula automat această comandă specifică.
"scripts": "start": "nod app.js",
Acum putem folosi npm start
pentru a porni serverul și vom vedea mesajul nostru de server în terminal.
Server ascultă pe portul 3002
Dacă vom rula a curl -i
pe adresa URL, vom vedea că este alimentat de Express acum și există și alte titluri suplimentare, cum ar fi Tipul de conținut
.
curl -i http: // localhost: 3002
HTTP / 1.1 200 OK X-Powered-By: Express Tip de conținut: text / html; charset = utf-8 Content-Length: 14 ETag: W / "e-gaHDsc0MZK + LfDiTM4ruVL4pUqI" Data: Miercuri, 15 Aug 2018 22:38:45 GMT Conectare:!
În scopul de a face cu ușurință cu POST
și A PUNE
cererile către API-ul nostru, vom adăuga middleware parsarea corpului. Aici este locul nostru corp-parser
modulul vine. corp-parser
va extrage întregul corp al unei cereri de intrare și îl va analiza într-un obiect JSON cu care putem lucra.
Pur și simplu vom cere modulul din partea de sus a fișierului nostru. Adăugați următoarele necesita
declarație în partea de sus a dvs. app.js fişier.
const corpParser = necesită ('body-parser'); ...
Apoi vom spune ca aplicația noastră Express să fie utilizată corp-parser
, și căutați JSON.
// Utilizați Node.js parsarea aplicației middleware app.use (bodyParser.json ()); app.use (bodyParser.urlencoded (extins: true,);
De asemenea, să ne schimbăm mesajul pentru a trimite un obiect JSON ca răspuns în loc de text simplu.
answer.send (message: 'Node.js și Express REST API');
În continuare este plinul nostru app.json fișier așa cum este prezent acum.
// Solicitați pachete și setați portul const expres = necesită ('express'); const port = 3002; const bodyParser = necesită ('body-parser'); const app = express (); // Utilizați Node.js parsarea aplicației middleware app.use (bodyParser.json ()); app.use (bodyParser.urlencoded (extins: true,); app.get ('/', (cerere, răspuns) => answer.send (message: 'Node.js și Express REST API');); // Porniți serverul const server = app.listen (port, eroare) => if (error) returna console.log ('Error: $ error'); console.log server.address (). port '););
Dacă trimiteți a curl -i
la server, veți vedea că antetul se întoarce acum Tip de conținut: cerere / json; charset = utf-8
.
Până acum, avem doar o OBȚINE
traseu spre rădăcină (/
), dar API-ul nostru ar trebui să poată gestiona toate cele patru metode majore de solicitare HTTP pe mai multe adrese URL. Vom configura un router și vom face niște date false pentru afișare.
Să creăm un nou director numit rute, și un fișier în cadrul apelului routes.js. Vom lega de el în partea de sus app.js.
const trasee = necesită ('./ rute / rute');
Rețineți că .js
extinderea nu este necesară în cerințele. Acum vom muta aplicația noastră OBȚINE
ascultătorului routes.js. Introduceți codul următor în routes.js.
const router = app => app.get ('/', (cerere, răspuns) => response.send (message: 'Node.js și Express REST API'));
În cele din urmă, exportați router
astfel încât să putem folosi în cadrul nostru app.js fişier.
// Exportați routerul module.exports = router;
În app.js, inlocuieste app.get ()
codul pe care l-ați avut înainte cu un apel la rute ()
:
rute (app);
Acum ar trebui să puteți merge la http: // localhost: 3002
și a vedea același lucru ca înainte. (Nu uitați să reporniți serverul!)
Odată ce totul este configurat și funcționează corect, vom difuza date JSON cu un alt traseu. Vom folosi datele false pentru moment, deoarece baza noastră de date nu este încă înființată.
Să creăm a utilizatori
variabilă în routes.js, cu unele date falsificate de utilizator în format JSON.
const username = id: 1, nume: "Richard Hendricks", email: "[email protected]", id: 2, nume: "Bertram Gilfoyle", email: "[email protected]" ,];
Vom adăuga un altul OBȚINE
ruta spre ruterul nostru, / utilizatori
, și trimite datele de utilizator prin intermediul.
app.get ('/ users', (cerere, răspuns) => response.send (users););
După repornirea serverului, puteți naviga acum la http: // localhost: 3002 / utilizatori
și vedeți toate datele afișate.
Notă: Dacă nu aveți o extensie de vizualizare JSON în browserul dvs., vă recomandăm să descărcați unul, cum ar fi JSONView pentru Chrome. Acest lucru va face datele mult mai ușor de citit!
Vizitați GitHub Repo pentru a vedea codul complet pentru acest post și pentru al compara cu cel al dvs..
În acest tutorial, am învățat cum să configurați un server HTTP încorporat și un server Express în nod, cereri de rutare și adrese URL și să consumați date JSON cu cereri de solicitare.
În ultima tranșă a seriei API RESTful, vom conecta serverul Express la MySQL pentru a crea, vizualiza, actualiza și șterge utilizatorii dintr-o bază de date finalizând funcționalitatea API-ului nostru.