Izveidojiet drošu REST API, izmantojot NodeJS un Express

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai

Šajā visaptverošajā apmācībā jūs uzzināsit paraugpraksi, lai izveidotu, nodrošinātu un izvietotu ražošanai gatavu REST API, izmantojot Node.js un Express.

Kas ir REST API?

API (Application Programming Interface) nodrošina programmatūras saziņu un datu apmaiņu starp lietojumprogrammām. REST (pārstāvības valsts nodošana) ir populārs arhitektūras stils mērogojamu tīmekļa API projektēšanai.

Dažas galvenās REST API īpašības ir šādas:

  • Klienta-servera atdalīšana
  • Bezvalstniecība starp pieprasījumiem
  • Resursi pakļauti beigu punktos
  • HTTP metožu izmantošana, lai manipulētu ar resursiem
  • Kopīgojams ar vairākiem klientiem

Kāpēc Node.js un Express for REST API?

Vieglais Node izpildlaiks apvienojumā ar Express sistēmu nodrošina lieliskus rīkus, lai ātri izveidotu REST API aizmugursistēmas:

  • Ātra veiktspēja ar nebloķējošu notikumu cilpu
  • Lieliska NPM pakotņu ekosistēma
  • Populārs mērogojamām vietnēm ar lielu trafiku
  • Pure JavaScript padara izstrādi pieejamu
  • Viegli savienojami REST maršruti un datu bāzes modeļi

1. solis – Projekta sastatnes

Iestatīsim jaunu projektu ar nosaukumu |_+_|:

|_+_|

Tas izveidos |_+_| ar noklusējuma konfigurācijām, lai pārvaldītu atkarības.

Instalējiet galvenās atkarības

Pēc tam instalējiet Express projekta direktorijā:

|_+_|

Un dažas citas noderīgas paketes:

|_+_|
  • |_+_| - Pievienojiet un modelējiet MongoDB datu bāzi
  • |_+_| - Ielādēt vides mainīgos no |_+_| failu
  • |_+_| - Drošības starpprogrammatūra HTTP galvenēm
  • |_+_| - HTTP pieprasījumu reģistrēšanas starpprogrammatūra
  • |_+_| - Iespējot CORS vairāku izcelsmes HTTP pieprasījumiem

2. darbība — konfigurējiet lietotni

Kad atkarības ir instalētas, atveriet |_+_| un iestatiet lietotnes ieejas punktu:

|_+_|
  • Ielādēt vides mainīgos
  • Inicializējiet Express lietotni
  • Izmantojiet drošību un pieprasiet parsēšanas starpprogrammatūru
  • Definējiet portu no ENV vai 5000
  • Sākt serveri

Drošības starpprogrammatūra

Ķivere palīdz aizsargāt lietotni, iestatot dažādas HTTP atbildes galvenes:

  • XSS filtrs
  • MIME šņaukšanas novēršana
  • Atspējo klienta kešatmiņu
  • Rāmja aizsargs, lai novērstu klikšķu uzlaušanu

Vienmēr izmantojiet Helmet, kad palaižat Node/Express lietotnes, kas ir pieejamas internetā.

3. darbība — pievienojiet MongoDB datu bāzi

Tālāk mēs iestatīsim MongoDB, lai saglabātu mūsu API datus. Izveidojiet |_+_| fails akreditācijas datu glabāšanai:

|_+_|

Aizstāt ar savu īsto MongoDB savienojuma virkni. Tas ielādē MongoDB informāciju no vides mainīgajiem, uz kuriem atsaucamies vēlāk.

Mangoose savienojums

Instalējiet Mongoose objektu datu modelēšanai:

|_+_|

Izveidojiet savienojumu ar MongoDB datu bāzi:

|_+_|
  • Izmantojiet MONGO_URI vērtību no |_+_| failu
  • Pieslēgts žurnāls vai fiksēt kļūdas

Lietotāja modeļa paraugs

Definējiet lietotāja shēmas un modeļa piemēru:

|_+_|

Pielāgojiet laukus, lai tie atbilstu jūsu API datu vajadzībām.

4. darbība — definējiet REST API maršrutus

Tagad mēs varam izveidot CRUD maršrutus, lai veiktu darbības ar REST resursiem.

Vispirms izveidojiet |_+_| mape ar |_+_| fails:

|_+_|

Importējiet Express maršrutētāju un lietotāja modeli, pēc tam izveidojiet apdarinātāju maršrutam |_+_| lai ielādētu visus lietotājus.

CRUD maršruta piemēri

Papildu izplatītie CRUD maršruti:

|_+_|

Atkārtoti lietojamas apdarinātāja funkcijas

Atkārtoti lietojamas loģikas izvilkšana, piemēram, lietotāju izgūšana pēc ID:

|_+_|

5. darbība – autentifikācija un drošība

Prioritātei jābūt autentifikācijas pievienošanai un piekļuves aizsardzībai API. Šeit ir sniegta paraugprakse Express REST API nodrošināšanai.

Šifrēšana un jaukšana

Izmantojiet bcrypt, lai jauktu datubāzē saglabātās paroles drošākai uzglabāšanai. Pēc tam salīdziniet lietotāja pierakstīšanās jaukus, vienlaikus aizsargājot avota paroli.

JWT žetoni

Autentifikācijai izmantojiet JSON tīmekļa marķierus, nevis sesijas. JWT kodē lietotāja datus parakstītā pilnvarā, kas tiek nosūtīta pēc pieprasījumiem:

|_+_|

Uz lomu balstīta autentifikācija

Piešķiriet lietotāja lomas, lai kontrolētu piekļuvi maršrutiem. Pārbaudiet atļaujas pieprasījumiem:

|_+_|

Likmes ierobežojums

Izmantojiet ātrumu ierobežojošu starpprogrammatūru, piemēram, Express Rate Limit, lai samazinātu pārmērīgus pieprasījumus un novērstu DDoS ļaunprātīgu izmantošanu vai brutālu spēku uzbrukumus.

SSL un HTTP

Iespējot HTTP ar SSL sertifikātiem API domēnā. Visām ražošanas API ir jāizmanto šifrēta transporta drošība.

6. solis – dokumentācija

Pareiza dokumentācija palīdz izstrādātājiem pareizi izmantot API bez piekļuves pamatā esošajam kodam. Dažas API dokumentu opcijas ietver:

Swagger

Swagger auto ģenerē interaktīvu dokumentāciju no JSDoc komentāriem maršruta apstrādātāja kodā.

Pastnieku kolekcijas

Veidojiet atkārtoti lietojamas pastnieku kolekcijas ar dokumentētiem galapunktiem, lai palīdzētu testēt un patērēt pakalpojumus.

Markdown faili

Darbojas arī vienkāršie Markdown faili, kas glabājas GitHub repo. Tomēr noteikti atjauniniet visas versijas.

Hosted Tools

Trešo pušu rīki, piemēram, Stoplight, ReadMe.io un APIary, arī palīdz veidot un vizualizēt dokumentāciju.

7. darbība. Versiju izveides stratēģija

Labākā prakse ir versijas REST API, lai jaunināšana nejauši neizjauktu atkarīgos klientus. Kopējās stratēģijas ir:

URI versiju noteikšana

Iekļaut maršruta ceļos API versiju:

|_+_|

Pielāgota pieprasījuma galvene

Nododiet API versiju, izmantojot pielāgotu galveni:

|_+_|

Pieņemt galveni

Izmantot Akceptēt galveni, lai norādītu multivides veidu:

|_+_|

Vaicājuma parametrs

Var izmantot arī |_+_| vaicājuma parametrs versiju veidošanai.

8. darbība. Testēšana un kvalitāte

Spēcīga testēšana nodrošina API atbilstību prasībām un aizsargā pret turpmāku izmaiņu regresiju.

Vienības pārbaude

Izolējiet un pārbaudiet atsevišķas funkcijas, komponentus un klases.

Integrācijas pārbaude

Pārbaudiet, vai apvienotie komponenti darbojas kopā, izmantojot plūsmas no gala līdz galam.

Veiktspējas pārbaude

Imitējiet lielu satiksmes slodzi, lai noteiktu mērogošanas ierobežojumus vai lēnus galapunktus.

Drošības pārbaude

Mēģiniet nesankcionētu piekļuvi vai nepareizi veidotu datu apstrādi, lai atrastu nepilnības.

Dokumentācija

Attīstoties API, pārbaudes dokumenti paliek precīzi.

9. darbība — izvietošana un mitināšana

Kad esat gatavs ražošanai, izvietojiet gan datu bāzes, gan API servera konteinerus tādos rīkos kā:

  • AWS ECS, Fargate
  • Azure konteineru gadījumi
  • Google Kubernetes Engine

Tas mērogojas horizontāli un iztur lielas satiksmes slodzes. Atkarīgs no tā, cik daudz mikropakalpojumu ietver sistēmu.

Konteineru orķestrēšana

Pārvaldiet konteinerus un pakalpojumus, izmantojot:

  • Kubernetes - de facto standarts
  • Docker Swarm — vienkārša klasteru pārvaldība

CI/CD cauruļvads

Iestatiet CI/CD konveijera rīku, piemēram, Travis CI, Circle CI, GitHub Actions vai Jenkins, lai automatizētu testēšanu un izvietošanu.

Infrastruktūra kā kods

Saglabājiet konfigurācijas skriptus, lai izveidotu infrastruktūru avota kontrolē — populārās opcijas Terraform un Ansible.

Secinājums

Tas beidz šo visaptverošo rokasgrāmatu par ražošanas līmeņa RESTful API izveidi, nodrošināšanu un izvietošanu, izmantojot Node.js, Express un MongoDB!

Līdzņemšanas pamatprincipi ir:

  • Izmantojiet Node + Express, lai iegūtu ātrus, mērogojamus API
  • Modelējiet datus ar NoSQL datu bāzi, piemēram, MongoDB
  • Autentificēt pieprasījumus
  • Likmes ierobežojums un atbilstoši šifrēšana
  • Ieviesiet versiju veidošanas stratēģiju mainīgajām izmaiņām
  • Mitinātāja infrastruktūra mākoņa platformās

Piemērojot šīs dizaina vadlīnijas, tiks izveidotas ilgtspējīgas un stabilas REST API.

Skatīt Arī: