Kako funkcionira posrednički softver Node.js?

Isprobajte Naš Instrument Za Uklanjanje Problema

Kako funkcionira posrednički softver Node.js?

Što je Express middleware?

  • Posrednički softver doslovno znači sve što stavite između jednog sloja softvera.
  • Express middleware funkcija je koja se izvršava tijekom trajanja zahtjeva za Express poslužiteljem.
  • Svaki posrednički softver ima pristup svim HTTP zahtjevima i odgovorima kojima je pridružen.
  • Alternativno, međuopreme mogu prekinuti HTTP zahtjev ili ga proslijediti drugoj funkciji međuopreme sa sljedećim. Ovaj lanac međuopreme omogućuje vam particioniranje koda i stvaranje međuopreme za višekratnu upotrebu.

Zahtjevi za pisanje Express middleware -a

Morate instalirati nešto za stvaranje, korištenje i testiranje Express softvera Express. Najprije su potrebni čvor i NPM. Da biste bili sigurni da je instaliran, možete pokrenuti:

http //fxnetworks.con/activate
npm -v && node -v

Trebali biste vidjeti instalirane verzije Node i NPM. Ako nešto pođe po zlu, morate instalirati Node. Svi primjeri trebaju se koristiti u čvoru ver 8+ i NPM verziji 5+.

Ovaj članak koristi Express 4.x. To je važno zbog velikih promjena s 3.x na 4.x.



Express Middleware: Osnovno

Prvo koristimo Expressovo najosnovnije ugrađeno međuopreme. Izradite novi projekt i inicijalizirajte ga s npm ...

npm init npm install express --save Create server.js and paste the following code: const express = require('express'); const app = express(); app.get('/', (req, res, next) => { res.send('Welcome Home'); }); app.listen(3000);

Koje probleme rješava međuopreme? Zašto ga koristiti?

Pretpostavimo da koristite Node.js i Izraziti za pokretanje web aplikacije na web poslužitelju. U ovoj se aplikaciji morate prijaviti na određene stranice.

Kad web poslužitelj primi zahtjev za podacima, Express vam pruža objekt zahtjeva koji sadrži podatke o korisniku i podatke koje je zatražio. Express vam također daje pristup objektu odgovora koji se može izmijeniti prije nego što web poslužitelj odgovori korisniku. Ti se objekti obično skraćuju na req , govedina .

Funkcije posredničkog programa idealno su mjesto za izmjenu | _+_ | i | _+_ | objekte s povezanim podacima. Na primjer, korisnici se prijavljuju, možete dobiti detaljne informacije iz njegove baze podataka, a zatim se ti podaci spremaju u | _+_ | .

zašto aplikacija za gotovinu kaže da je ovo plaćanje otkazano radi vaše zaštite

Kako izgleda funkcija međuopreme?

req

Ako dođe do pogreške, a ne želite izvršiti drugi kôd, nemojte pozivati ​​ovu funkciju. U ovom slučaju ne zaboravite poslati odgovor, inače će klijent čekati odgovor dok ne istekne vrijeme.

res

Lanac posredničkog softvera

Možete proslijediti ili pomoću više polja u međuopreme | _+_ | za povezivanje međuoglasa za pozive:

res.user

Nakon što Express primi zahtjev, svaki međuopreme koji odgovara zahtjevu radit će u redoslijedu inicijalizacije sve dok ne dođe do operacije prekida.

Ovo je naslov slike

Stoga će se, ako dođe do pogreške, pozivati ​​sav posrednički softver za obradu pogrešaka sve dok jedan od njih više ne pozove | _+_ | poziv funkcije.

Vrste posredničkog softvera Express

  • Međuopreme na razini usmjerivača, kao što je router.use

  • Ugrađeno međuopreme, kao što su: express.static, express.json, express.urlencoded

  • Pogreška pri rukovanju međuopreme, na primjer: app.use (pogreška, req, res, next)

    excel ne sprema promjene
  • Posrednički softver treće strane, poput: bodyparser, cookieparser

  • Međuopreme na razini usmjerivača

  • express.Router koristi klasu express.Router za stvaranje modularne obrade ruta koja se može instalirati. Instanca usmjeravanja potpuni je međuopreme i sustav usmjeravanja.

    • Možete koristiti međuopreme za prijavu, provjeru autentičnosti itd. Kao što je prikazano u nastavku, za snimanje najnovijih aktivnosti korisnika i raščlanjivanje zaglavlja provjere autentičnosti, upotrijebite ga za određivanje trenutno prijavljenog korisnika i dodavanje u objekt Zahtjev.
    • Ova se funkcija izvršava svaki put kada program primi zahtjev. Ako dođe do pogreške, jednostavno završava odgovor bez pozivanja naknadnog posredničkog programa ili obrade usmjeravanja.
async function userMiddleware (req, res, next) { try { const userData = await getUserData(req.params.id); //see app.get below if(userData) { req.user = userData; next(); } } catch(error) { res.status(500).send(error.message); //replace with proper error handling } }

Ugrađeno međuopreme

Express ima sljedeće ugrađene značajke međuopreme:

postaviti govornu poštu na iphoneu na&t
  • | _+_ | Pružite statičke resurse kao što su HTML datoteke, slike itd.
  • | _+_ | Korisni teret analizira dolazni zahtjev u JSON -u.
  • | _+_ | Raščlanite dolazne zahtjeve korisnog tereta kodirane URL-om.

Pogreška pri rukovanju međuopreme

Pogreška pri rukovanju međuopreme uvijek ima četiri parametra (greška, req, res, sljedeći) . Morate ga identificirati kao funkciju međuopreme za obradu pogrešaka koja sadrži četiri parametra. Mora se navesti čak i ako ne morate koristiti sljedeći objekt. U suprotnom će se sljedeći objekt tumačiti kao obični posrednički softver i neće moći obraditi pogreške. Osnovni potpis izgleda ovako:

var app = express (); //your normal route Handlers app.get('/user/:id', userMiddleware, userController);

Primjer 1:

app.use

U ovom slučaju, međuopreme za obradu pogrešaka na kraju cjevovoda će obraditi pogrešku. Možda ćete također primijetiti, provjerio sam | _+_ | imovine. Ovo samo provjerava je li odgovor poslao zaglavlje klijentu. U protivnom će klijentu poslati HTTP 500 status i poruke o pogrešci.

Primjer 2:

Također možete povezati međuopreme za rukovanje pogreškama. Različite vrste pogrešaka obično se rješavaju različito:

app.use(middlewareA); app.use(middlewareB); app.get('/', [middlewareC, middlewareD], handler);
  • U tom slučaju posrednički softver provjerava je li došlo do pogreške 404 (nije pronađeno). Ako jest, generira stranicu NotFound predloška, ​​a zatim prenosi pogrešku sljedećoj stavci u međuopreme.
  • Sljedeći međuopreme provjerava je li došlo do pogreške 304 (neovlašteno). Ako je tako, generirat će Neovlaštenu stranicu i proslijediti pogrešku sljedećem međuopreme u tijeku.
  • Konačno, rukovanje pogreškom catch all bilježi samo pogreške, ako se ne pošalje odgovor, šalje grešku httpStatusCode (ili status HTTP 500 ako nije naveden) i prikazuje predložak UnknownError.

Središnji softver na razini treće strane

U nekim slučajevima pozadini ćemo dodati neke dodatne značajke. Instalirajte modul Node.js da biste dobili potrebnu funkcionalnost, a zatim ga učitajte u svoju aplikaciju na razini aplikacije ili usmjerivača.

Primjer: Kada tijelo-parser obrađuje zahtjev Content-Type zaglavlje, sva posrednička tijela za popunjavanje će koristiti raščlanjeni | _+_ | atribut.

next()

da sumiramo

Funkcionalnost međuopreme odličan je način za pokretanje koda pri svakom zahtjevu ili svakom zahtjevu za određenu rutu te poduzimanje radnji u vezi s podacima zahtjeva ili odgovora. Međuopreme su važan dio modernih web poslužitelja i vrlo su korisne.

#nodejs #express #nodejs-middleware

Vidi Također: