Så bygger du ditt första API med Node och ExpressJS

Webbtjänster kommunicerar med varandra genom API:er (Application Programming Interfaces) som fungerar som broar mellan olika system. Ett API gör det möjligt för olika applikationer att utbyta data och funktioner på ett säkert och strukturerat sätt, vilket är motorn bakom nästan all modern webbteknik. Moderna SaaS-applikationer bygger på väldesignade API:er för att separera frontend från backend och möjliggöra skalbarhet.
I den här guiden bygger vi ett komplett API från grunden med Node.js och ExpressJS. Du får lära dig hur du sätter upp en server, designar endpoints och bygger en skalbar backend med JavaScript.
Grundläggande koncept: API, Node.js och ExpressJS
API står för Application Programming Interface - en länk mellan olika mjukvaruapplikationer som beskriver vilken data de kan utbyta och hur kommunikationen sker.
Node.js är en miljö som kör JavaScript på serversidan. Det använder en "event-driven, non-blocking I/O model" vilket gör det skalbart och effektivt för att hantera många samtidiga anslutningar.
ExpressJS (ofta bara kallat Express) är ett flexibelt ramverk för Node.js med praktiska funktioner som routing, middlewares och hantering av HTTP-begäran och svar.
Installation av Node.js, npm och ExpressJS
Innan du kan börja utveckla ditt API behöver du installera Node.js, npm (node package manager) och ExpressJS.
Steg 1: Installera Node.js och npm
För att installera Node.js och npm, följ dessa steg:
- Gå till Node.js officiella webbplats (https://nodejs.org).
- Välj den version som passar dina behov.
- Ladda ner installationsfilen och följ instruktionerna för att installera Node.js.
- När Node.js är installerat, kommer npm också att installeras automatiskt som en del av paketet.
För att verifiera installationen, öppna ett terminalfönster och skriv följande kommandon:
node -v
npm -v
Du bör se versionsnumret för både Node.js och npm som svar, vilket bekräftar att installationen var framgångsrik.
Steg 2: Installera ExpressJS
För att installera ExpressJS, behöver du använda npm. Du kan installera ExpressJS globalt på ditt system (vilket gör det tillgängligt för alla dina Node.js-projekt) eller lokalt inom ett specifikt projekt.
För att installera ExpressJS globalt, skriv följande kommando i terminalen:
npm install -g express
För att installera det i ett specifikt projekt, navigera först till projektets mapp i terminalen, och kör sedan följande kommando:
npm install express
Nu är du redo att börja bygga ditt API med Node.js och ExpressJS!
Sätta upp ett projekt och bygga API:et
När du har installerat alla nödvändiga verktyg är det dags att skapa ditt första Node.js-projekt och börja bygga ditt API med ExpressJS.
Nedan går vi igenom hur du kan skapa en mycket enkel server, hur du designar API-endpoints, och implementerar logiken för varje endpoint.
Steg 1. Skapa ett projekt
- Öppna din terminal och navigera till den mapp där du vill skapa ditt projekt.
- Skapa en ny mapp för ditt projekt med kommandot mkdir mitt_api.
- Gå in i mappen med cd mitt_api.
- Initiera ett nytt Node.js-projekt genom att köra npm init -y. Detta kommer att skapa en package.json fil i din projektmapp.
- För att installera ExpressJS i ditt projekt, kör du kommandot npm install express.
Steg 2. Skapa en enkel server med ExpressJS
Skapa en ny fil i din projektmapp som du kallar app.js. I den här filen, skapa en enkel server med ExpressJS enligt nedan:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(App listening at `http://localhost:${port}`);
});
Du har nu skapat ditt första fungerande API med Node.js och ExpressJS.
Du kan starta din server genom att köra node app.js i terminalen, och sedan går till localhost:3000 i webbläsaren så borde du få upp “Hello Word”.
Steg 3. Designa specifika API-endpoints
När du fått din "Hello World" att fungera är nästa steg att utveckla den verkliga funktionen för ditt API.
Detta innebär vanligtvis att utveckla funktionalitet för olika CRUD-operation:
- GET /items: Hämtar en lista med alla objekt.
- POST /items: Skapar ett nytt objekt.
- PUT /items/:id: Uppdaterar ett objekt med ett visst ID.
- DELETE /items/:id: Tar bort ett objekt med ett visst ID.
För varje endpoint behöver du sedan skapa en route i din app.js. Två exempel på olika funktioner som du kan implementera går att se nedan:
// PUT /items/:id
app.put('/items/:id', (req, res) => {
const id = parseInt(req.params.id)
const index = items.findIndex(item => item.id === id);
if (index === -1) {
return res.status(404).json({ error: 'Item not found' });
}
const updatedItem = { ...items[index], ...req.body };
items[index] = updatedItem;
res.json(updatedItem);
});
// DELETE /items/:id
app.delete('/items/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = items.findIndex(item => item.id === id;
if (index === -1) {
return res.status(404).json({ error: 'Item not found' });
}
const deletedItem = items[index];
items.splice(index, 1);
res.json(deletedItem);
});
När man bygger API:er och arbetar med data så behöver du vanligtvis också ha en databas, och då rekommenderar jag MongoDB.
MongoDB är väldigt smidigt att sätta upp för ExpressJS och det finns massor av guider, tutorials och exempelkod tillgängliga för att hjälpa dig få ditt API att fungera.
Säkerhet och tips för API-utveckling
Att bygga ett API handlar inte bara om endpoints och datahantering - säkerhet och bästa praxis är avgörande för att skapa robusta, skalbara system.
Tips när du utvecklar ditt API
Här är några generella bästa praxis att följa när du bygger ett API med Node.js och ExpressJS:
- Strukturera ditt projekt: Ett välstrukturerat projekt gör det lättare att underhålla och skala din kod. Ett vanligt tillvägagångssätt är att dela upp din kod i olika moduler baserat på funktionalitet, till exempel routes, controllers, models, etc. Om du bygger en MVP kan du börja enklare och raffinera strukturen senare - läs om hur du hanterar teknisk skuld strategiskt.
- Använd middlewares: Middlewares kan användas för att hantera en mängd olika uppgifter, till exempel felhantering, begäransloggning, autentisering, och mycket mer. Genom att använda middleware effektivt kan du hålla din kod DRY (Don't Repeat Yourself) och lättare att underhålla.
- Hantera fel: Fel kan uppstå när som helst under körningen av ditt program. Det är viktigt att du hanterar dessa fel på rätt sätt för att förhindra att ditt program kraschar genom try-catch block, samt ger användbara felmeddelanden till klienten.
Säkerhet och autentisering med JWT
När ditt API kräver användarautentisering behöver du skydda endpoints så att endast behöriga användare får åtkomst. JWT (JSON Web Token) är en populär metod som möjliggör säker överföring av digitalt signerad information mellan parter.
För att använda JWT för autentisering i ditt API, kan du följa dessa grundläggande steg:
- När en användare loggar in, skapa en JWT som inkluderar användarens identitet och skicka den tillbaka till klienten.
- Klienten ska lagra JWT:n (till exempel i localStorage eller sessionStorage i webbläsaren) och skicka den med varje följande begäran till API:et i Authorization header.
- Servern ska sedan verifiera JWT:n för varje inkommande begäran och tillåta åtkomst endast om token är giltig.
För att implementera JWT-autentisering i ExpressJS, kan du använda paket såsom jsonwebtoken och express-jwt.