Sådan skrives produktionsklar Node.js Rest API - Javascript-version

En trin for trin guide med et eksempel

Node.js Rest API

Denne artikel viser alle de nødvendige ingredienser til den produktionsklare Node.js resten API med almindeligt vanilje-javascript. Jeg vil kategorisere dette i to faser

  1. Udviklingsfase
  2. Produktionsfase

Lad os ikke komplicere tingene og oprette enkel bruger-API, hvor du får en liste over brugere med Get-anmodning og gemmer en bruger med postanmodning. da vi fokuserer på Node.js resten API, lad os gå med det enkle API. lad os downloade alle de nødvendige værktøjer til projektet.

Nødvendige værktøjer:

  • Node.js (https://nodejs.org/en/)
  • Visuel studiekode (https://code.visualstudio.com/)
  • nodemon
  • udtrykke
  • eslint
  • webpack

Til komplet projekt

git klon https://github.com/bbachi/prod-ready-node-rest-api.git

Følg nedenstående artikel for trin for trin

Udviklingsfase

  • Første opsætning
  • nodemon
  • Logning
  • Sådan håndteres udefinerede ruter
  • Sådan defineres kontekststi
  • Fejlhåndtering
  • Lint dit projekt
  • Test dit projekt

Ethvert node.js-projekt starter med package.json lad os oprette en mappe kaldet user_api og cd ind i den og gøre npm init. det vil bede dig om alle detaljer som pakkenavn, version, forfatter osv. Du kan lade dem være tomme eller give nogle værdier vil oprette en package.json i din mappe.

mkdir bruger_api
cd bruger_api
npm init

Hvis du bemærker pakken.json, er index.js den vigtigste fil, der er startfilen for projektet. lad os oprette index.js-fil på rodniveau og installere express.js-rammer. Express er en webapplikationsramme til node.js, som vi kan bruge til at oprette HTTP-server og konfigurere ruter til vores projekt.

tryk på index.js
npm installere ekspres - spar

hver gang du installerer pakken, og den tilføjes til afsnittet om afhængigheder, som du kan se nedenfor. du behøver ikke at tilføje det manuelt, når du gør det med “- gem” -flagget, npm sørger for at tilføje det til afsnit om afhængigheder.

lad os importere eksprimere til index.js og oprette Http-server, der lytter på port 3070 og oprette en standardrute med “/”.

index.js

var express = kræver ("express"),
    app = ekspress (),
    port = 3070;
app.get ("/", funktion (req, res) {
    res.send ("App fungerer !!");
})
app.listen (port, funktion (fejle) {
     console.log ("kører server fra port :::::::" + port);
});

kør kommandoen nedenfor og åbn browseren og tryk på http: // localhost: 3070og standardrute fungerer !!.

node index.js
Standard rute arbejder

Lad os tilføje scripts til package.json. scripts er det perfekte sted at tilføje alle dine kommandoer, så du kan køre med npm-kommando. Føj nedenstående linje til scriptsafsnittet i package.json. Du kan køre med kommandoen npm start

"scripts": {
    "start": "node index.js",
    "test": "echo \" Fejl: ingen test specificeret \ "&& exit 1"
 },

Lad os tilføje et par ruter og teste det i browseren. tilføj body-parser-afhængighedsudtrykket bruger denne mellemvare til at få adgang til anmodningsdata fra postanmodningen. Se på den komplette index.js-fil og package.json-fil.

npm installer body-parser - gem
// i filen index.js
app.use (bodyParser.json ());

nodemon

På dette øjeblik har vi fuld hvile API med 4 ruter inklusive standard. et problem, vi har lige nu, er en manuel genstart af serveren, hver gang vi redigerer en fil. lad os tilføje nodemon. det er et værktøj, der automatisk registrerer filændringer i dit bibliotek og genstarter serveren uden manuel indgriben.

Dette er en dev afhængighed betyder kun nødvendig for udvikling, så flag - save-dev. tilføj en anden linje til scriptsafsnittet, så vi kan køre med npm.

npm installere nodemon - save-dev
// dev-afhængigheder tilføjes
"afhængighed": {
   "nodemon": "^ 1.18.10"
}
// scriptsafsnit i package.json
"scripts": {
   "start": "node index.js",
   "start: dev": "nodemon index.js",
   "test": "echo \" Fejl: ingen test specificeret \ "&& exit 1"
}

kør kommandoen npm nedenfor og rediger filen, du kan se ændringer med det samme uden genstart af serveren. det øger din produktivitet.

npm kørestart: dev
nodemon

Logning

Lad os konfigurere loggning til vores projekt. oprette en ny mappe kaldet logger med en fil kaldet logger.js. vi kan bruge enhver pakke som winston, log4js, men vi bruger ikke dem til enkelthedsformål. Sådan opretter du en separat fil og importerer den til en anden fil i nodejs.

Nu kan du se, at logningen udføres af den logger, som vi oprettede, når du erstatter alle console.log-udsagn. på denne måde kan du styre al din applogging fra en fil. kan du tilføje en hvilken som helst tredjepartspakke i denne fil uden ændringer på tværs af appen.

logger.info ("kører server fra port :::::::" + port);

Sådan håndteres udefinerede ruter

vi definerede standard og tre andre ruter i vores service. lad os også håndtere udefinerede ruter. hvad nu hvis brugeren forsøger at indtaste en forkert eller stave ruten forkert. Sørg for at tilføje denne rute som den sidste rute. Hvis du tilføjer dette i starten, vil alle ruter blive omdirigeret til dette.

// anmodning om at håndtere udefinerede eller alle andre ruter
app.get ("*", funktion (req, res) {
   logger.info ("brugernes rute");
   res.send ("App fungerer !!!!!");
})

Sådan defineres en kontekststi

vi har ikke nogen kontekststi til vores projekt, lad os definere det. Da det er en API, lad os definere “/ api” for alle ruter og også definere underkontekststi for brugermodulet, der er “/ bruger”.

efter nedenstående ændringer til alle filerne, ændres stien fra http: // localhost: 3070 / brugere til http: // localhost: 3070 / api / user / brugere

// ændringer - opret separate mapperuter og to filer under den
mkdir ruter
cd-ruter
berør ruter.js user.js

Fejlhåndtering

kommer snart !!

Lint dit projekt

Lad os tilføje eslint til vores projekt. Det er meget vigtigt at have fnug til dit projekt for at opretholde de samme kodningsstandarder på tværs af dit team. kør efter kommandoer i en rækkefølge

// installerer eslint global, så du kan bruge eslint
npm installere -g eslint
// installerer eslint til projektet
npm installer eslint -save-dev
// det vil oprette .eslintrc.js, mens det oprettes, vil der oprette en række // med spørgsmål, som hvilke standarder du vil bruge osv.
eslint - init
// tilføj disse nedenfor til scriptsafsnittet i package.json
"eslint": "eslint ./",
"eslint-fix": "eslint ./ --fix",
eslint - fnug

Når du først kører kommandoen nedenfor, vil du have mange eslint-fejl, du kan nemt løse alle disse med den anden kommando

npm kør eslint
npm kør eslint-fix
eslint fejl

med anden kommando kan du løse alle fejlene, hvis ikke løse det manuelt, indtil du løser alle fejlene. advarsler er fine.

fejl med eslint

vi har tilføjet to filer til fnug, og package.json ser ud

Test dit projekt

kommer snart

Produktionsfase

  • webpack opsætning
  • miljøvariabler
  • Dockerize appen

Webpack-opsætning

når udviklingen er afsluttet, er vi nødt til at samle vores app og distribuere i andre miljøer som scene, uat og prod osv. Lad os tilføje webpack til vores projekt for at samle hele appfilerne i en enkelt fil.

installer følgende for at opsætte webpakke

// installere webpack global
npm installere -g webpack
// installer webpack og webpack-cli i projektet
npm installere webpack webpack-cli - save-dev
// Tilføj nedenfor til scriptsafsnittet i package.json
"build": "webpack"

tilføj webpack.config.js, hvor du nævner startfil og outputmappe, og målet er vigtigt, fordi vores runtime-miljø er knudepunkt.

når du kører kommandoen nedenfor, bygger webpack hele projektet i en enkelt bundtfil og placerer den i den målmappe, der er nævnt i webpack.config.js

npm run build
webpack build

Efter at bygningen er færdig, lad os tilføje npm-scriptet nedenfor til scripts-afsnittet i package.json og køre kommandoen

"prod": "node dist / api.bundle.js",
npm kør prod // kør dette i terminalen

Miljøvariabler

kommer snart

Dockerize appen

Lad os containere denne app. Nedenfor er artiklen om, hvordan man bygger billedet og kører appen i containeren. se :)

Hvis du vil se på typeskriptversionen af ​​den. Her er linket.