How do I run an express JS server?

Node.js API: Komplet kildekode

25/02/2024

Rating: 4.72 (9437 votes)
Indholdsfortegnelse

Kom godt i gang med din egen Node.js API

Bygningen af en robust og skalerbar API er essentiel i moderne webudvikling. Node.js, kombineret med det populære Express.js framework, tilbyder en effektiv platform til at skabe kraftfulde backend-løsninger. Denne guide dykker ned i den komplette proces fra oprettelse af projektet til implementering af endpoints, og giver dig den nødvendige viden og kildekode til at komme godt i gang.

Where can I find the source code for the Node JS API?
The full source code for the Node.js API implementation can be found in this GitHub repository. Please refer to the scenario for information on the implemented solution. This implementation uses the Express web application framework to build a Node.js API. Create a folder for your API, navigate into it, and run npm init.

Grundlæggende Projektopsætning med npm

Før vi kan begynde at skrive kode, er det vigtigt at etablere en solid projektstruktur. Dette starter med at initialisere et nyt Node.js projekt ved hjælp af npm (Node Package Manager). Naviger til din ønskede projektmappe i terminalen og kør kommandoen:

npm init

Denne kommando vil guide dig gennem processen med at oprette en package.json fil. Denne fil er hjertet i dit Node.js projekt; den indeholder metadata om dit projekt, såsom navn, version, beskrivelse, scripts og afhængigheder. Du kan acceptere standardindstillingerne eller tilpasse dem efter behov. Her er et eksempel på, hvordan en package.json fil kan se ud for en timesheets API:

{ "name": "timesheets-api", "version": "1.0.0", "description": "API used to add timesheet entries for employees and contractors", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git+https://github.com/auth0-samples/auth0-pnp-timesheets.git" }, "author": "Auth0", "license": "MIT", "bugs": { "url": "https://github.com/auth0-samples/auth0-pnp-timesheets/issues" }, "homepage": "https://github.com/auth0-samples/auth0-pnp-timesheets#readme" }

Installation af Nødvendige Afhængigheder

For at bygge vores API med Express, skal vi installere en række essentielle pakker. Disse pakker udvider funktionaliteten af vores Node.js applikation og gør udviklingsprocessen mere effektiv. De vigtigste afhængigheder inkluderer:

  • express: Kernen i vores webapplikationsframework. Gør det nemt at definere routes, middleware og håndtere HTTP-requests.
  • cors: Nødvendig for at tillade Cross-Origin Resource Sharing (CORS). Dette er afgørende, hvis din API skal kaldes fra en frontend-applikation, der kører på et andet domæne.
  • jwks-rsa: Et bibliotek til at hente RSA signing keys fra et JWKS (JSON Web Key Set) endpoint. Bruges ofte i forbindelse med JWT-autentificering.
  • express-jwt: Et middleware til at autentificere HTTP-requests ved hjælp af JWT (JSON Web Tokens). Sikrer, at kun autoriserede brugere kan tilgå bestemte endpoints.
  • body-parser: Middleware til at parse request bodies. Gør det nemt at tilgå data sendt i POST- eller PUT-requests.

Installer disse afhængigheder ved at køre følgende kommando i din terminal:

npm install express cors express-jwt jwks-rsa body-parser express-jwt-authz --save

Tilføjelsen af --save sikrer, at disse afhængigheder bliver registreret i din package.json fil.

Implementering af API Endpoints

Nu er det tid til at skrive selve API-koden. Opret en fil ved navn server.js (eller et andet passende navn) i din projektmappe. Denne fil vil indeholde logikken for at importere afhængigheder, definere endpoints og starte serveren. Her er et grundlæggende eksempel på implementeringen:

const express = require('express'); const app = express(); const { expressjwt: jwt } = require('express-jwt'); const jwksRsa = require('jwks-rsa'); const cors = require('cors'); const bodyParser = require('body-parser'); // Aktiver CORS for at tillade requests fra andre domæner app.use(cors()); // Aktiver middleware til parsing af request bodies app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // Definer et simpelt POST endpoint for /timesheets app.post('/timesheets', function(req, res){ res.status(201).send({message: "This is the POST /timesheets endpoint"}); }); // Start API-serveren på port 8080 const PORT = process.env.PORT || 8080; app.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); });

Kørsel af API'en

For at starte din API, skal du blot køre følgende kommando i din terminal:

node server.js

Din API vil nu køre på localhost:8080. Du kan teste POST-requestet til /timesheets endpointet ved hjælp af værktøjer som Postman eller curl. Du skulle modtage en JSON-respons med beskeden "This is the POST /timesheets endpoint".

Sikkerhedsovervejelser: JWT Autentificering

Som nævnt i eksemplet, er det afgørende at sikre dine API endpoints. En almindelig metode er at bruge JWT-baseret autentificering med express-jwt og jwks-rsa. Dette indebærer typisk at definere en JWT-strategi, der validerer tokens udstedt af en autoritet. Her er et udkast til, hvordan dette kan integreres:

// ... (tidligere kode) ... // Konfigurer JWT middleware const jwtCheck = jwt({ secret: jwksRsa.expressJwtSecret({ cache: true, rateLimit: true, jwksRequestsPerMinute: 5, // Erstat med din faktiske JWKS URI jwksUri: 'https://YOUR_AUTH0_DOMAIN/.well-known/jwks.json' }), audience: 'YOUR_API_AUDIENCE', issuer: 'https://YOUR_AUTH0_DOMAIN/', algorithms: ['RS256'] }); // Anvend JWT middleware på beskyttede routes // app.use('/api/v1/protected', jwtCheck); // Eksempel på et beskyttet endpoint // app.get('/api/v1/protected/profile', jwtCheck, function(req, res) { // res.json({ // message: 'Du har adgang til beskyttet data!', // user: req.auth // }); // }); // ... (resten af koden) ...

Vigtigt: Husk at erstatte pladsholdere som YOUR_AUTH0_DOMAIN og YOUR_API_AUDIENCE med dine specifikke værdier fra din identitetsudbyder.

Sammenligning af Middleware

Valget af middleware kan have stor indflydelse på din API's ydeevne og funktionalitet. Her er en kort oversigt over de vigtigste middleware, vi har brugt:

MiddlewareFormålBeskrivelse
ExpressWeb FrameworkGrundlaget for at bygge webapplikationer og API'er i Node.js.
CORSCross-Origin RequestsTillader serveren at modtage requests fra forskellige domæner.
Body-ParserRequest Body ParsingGør det muligt at tilgå data sendt i request body (f.eks. JSON, URL-encoded).
express-jwtJWT AutentificeringValiderer JWTs for at beskytte endpoints.
jwks-rsaJWKS HentningHenter offentlige nøgler til validering af JWT-signaturer.

Ofte Stillede Spørgsmål (FAQ)

Hvad er en API?

En API (Application Programming Interface) er et sæt regler og protokoller, der definerer, hvordan forskellige softwarekomponenter skal interagere med hinanden. I webudvikling bruges API'er ofte til at tillade kommunikation mellem klienter (f.eks. webbrowsere) og servere.

Hvorfor bruge Express.js?

Express.js er et minimalistisk og fleksibelt Node.js webapplikationsframework, der giver et robust sæt funktioner til web- og mobilapplikationer. Det forenkler processen med at oprette server-side logik og håndtere HTTP-requests.

Hvad er JWT?

JWT (JSON Web Token) er en kompakt og selvstændig måde at overføre information sikkert mellem parter som et JSON-objekt. Det bruges ofte til autentificering og autorisering i webapplikationer, da det kan verificeres og betros.

Hvordan sikrer jeg min API?

Sikkerhed er afgørende. Ud over JWT-autentificering kan du implementere inputvalidering, rate limiting, HTTPS og regulære sikkerhedsopdateringer for at beskytte din API mod uautoriseret adgang og angreb.

Konklusion

Denne guide har givet dig en grundig introduktion til at bygge en Node.js API med Express.js, inklusive opsætning, installation af afhængigheder og implementering af endpoints. Ved at følge disse trin kan du hurtigt komme i gang med at udvikle dine egne robuste og sikre backend-løsninger. Husk altid at prioritere sikkerhed og god kodepraksis for at sikre en stabil og pålidelig API.

Hvis du vil læse andre artikler, der ligner Node.js API: Komplet kildekode, kan du besøge kategorien Teknologi.

Go up