Bli kvitt feilhåndtering med NodeJS + Express

( Jaydipsinh Vaghela) (1. sep. 2020)

Foto av Erik Mclean Unsplash

Feilhåndtering i Javascript er litt litt vondt når du akkurat begynner. I dag skal jeg forklare deg hvordan du håndterer feil med NodeJS + Express og forskjellige måter å gjøre det på.

Årsaken til at jeg skriver denne artikkelen er at når jeg tar et intervju for en juniorrolle, Vanligvis stiller du spørsmålet om hvordan du skal håndtere en rute som ikke eksisterer, eller hvordan du skal håndtere feilene mens du oppretter en API med NodeJS? Mange utviklere klarer ikke å svare på dette spørsmålet. Så denne artikkelen er spesielt for utviklere på yngre nivå eller junior.

Vi skal bruke NodeJS (v12.18. *), Express (v4.17. *) Og ESLint med Retningslinjer for kodestil for Airbnb . Jeg har lagt til Github-lenken for din referanse hvis du vil se gjennom den.

Dette er tingene vi vil dekke:

  • Forstå hvordan ekspres definerer ruter og kartlegging
  • Lag ekspress mellomvare for å håndtere API når ingen rute eksisterer
  • Forstå hva som skjer hvis koden genererer tilfeldige feil
  • Opprett ekspress mellomvare for å håndtere alle slags feil

Express rutemekanisme & Ingen rute eksisterer mellomvare

Vi kan legge til en rute for å uttrykke ved hjelp av app.use() eller express.Router() -metoden. Når vi bruker denne metoden, følger ekspres topp til bunn-tilnærming for å legge til listen over registrerte ruter. Så når vi kaller et API, begynner serveren å finne den matchende ruten fra topp til bunn. I løpet av denne prosessen serverer den forespørselen med den første matchende ruten. Du er i stand til å opprette den samme ruten flere ganger med express, men med denne tilnærmingen blir den første ruten alltid utført for å betjene forespørselen.

Hvis noen prøver å få tilgang til et API-endepunkt som ikke eksisterer, får du en uventet feil fra serveren. For best praksis bør vi ta vare på denne typen situasjoner. Vi kan ikke kaste en uventet feil til frontend hvis vi vurderer dette fra et UX-perspektiv. For å håndtere en slik situasjon må vi bruke ekspress mellomvare som skal ta seg av en ingen rute eksisterer situasjon. Her er noen eksempler på kode.

Ingen rute eksisterer mellomvare

Denne mellomvaren må være den siste setningen for rutedefinisjonskoden din. Enhver annen rute som er definert etter denne mellomvaren, blir aldri utført, så posisjonen til denne mellomvaren er veldig viktig. Når express begynner å lete etter en rute, og hvis den ikke finner noen matchende ruter, utfører Express koden til denne mellomvaren der vi kan ta de nødvendige tiltakene. I utgangspunktet svarer vi med en riktig feilmelding i svaret, slik at frontend-fyren kan ta en passende handling på det.

Feil i forretningslogikk & hvordan du håndterer det

Brukeropplevelse er nøkkelen til suksessen til enhver webapplikasjon. Vi vil alltid ha brukerinteraksjon med en positiv stemning selv med feil! Vi skriver tonnevis med kode hver dag, og det er ikke mulig å skrive koden uten feil. Spesielt når du er på juniornivå er det større sjanse for feil. Når koden vår krasjer normalt med express for API, blir hele feilobjektet sendt som svaret på forespørselen, som ikke er gyldig under noen omstendigheter. Vi må håndtere kodekrasj på en slik måte slik at vi kan overføre riktig feilmelding til brukeren. Her er koden kuttet for å legge til mellomvare for å håndtere eventuelle feil i ekspress.

Feilhåndtering av mellomvare

Ved å bruke dette vil feil generert i forretningslogikken returneres inne i feilobjektet. Feilobjektet inneholder fullstendig spor av feilen. Vi kan få status fra responsobjektet for å håndtere informasjonen riktig. Hvis ingen statuskoder blir funnet, returnerer vi standard 500-statuskoden, noe som betyr at noe gikk galt på serveren. Det er alltid en melding inne i sporingsobjektet for feil i et lesbart format for å beskrive feilen.

Jeg vil legge til, legg til noen avanserte ting her når du vurderer produksjonsutformingen. Vi bør sende et varsel et sted for å iverksette passende tiltak for alle feil.Normalt foretrekker jeg å sende et e-postvarsel til utviklerteamet, eller du kan bruke programvare for feilsporing, noe som BugSnag for å spore alle slags ting.

Nedenfor er et kodebit med arbeidskode, slik at du kan kjøre det lokalt og spille med det for å få en bedre forståelse. Du kan også finne full kodetilgang på repoen med arbeidskode.

GitHub Link: https://github.com/Jaydipsinhv/express-demo

Full arbeidskode med feilhåndtering

Jeg håper denne artikkelen hjelper juniorutvikleren til å få mer klarhet med unntakshåndtering.