Så bygger du ditt första API med Node och ExpressJS
Har du någonsin funderat på hur webbtjänster kommunicerar med varandra och utbyter data smidigt och effektivt? Kärnan till detta är något som kallas för API:er.
I den här artikeln kommer vi att ge en mycket enkel introduktion på hur man kan utveckla egna API:er med hjälp av Node.js och ExpressJS, två kraftfulla tekniker som används flitigt inom backend-utveckling.
Här kan Node.js beskrivas som en untime-miljö som låter dig köra JavaScript på servern, snarare än i webbläsaren. Medan ExpressJS är ett minimalistiskt ramverk för Node.js som ger dig de verktyg du behöver för att bygga just API:er.
Grundläggande koncept: API, Node.js och ExpressJS
Innan vi dyker ner i kod och börjar titta närmare på hur man bygger ett API, är det viktigt att förstå några grundläggande koncept såsom: vad är ett API, vad är Node.js och ExpressJS, och varför skulle vi vilja använda dem för att bygga API:er?
API står för Application Programming Interface. I dess enklaste form är ett API en länk mellan olika mjukvaruapplikationer, som beskriver vilken typ av data de kan utbyta och hur denna kommunikation sker.
Ett API fungerar därmed som en bro som tillåter olika program att kommunicera med varandra, vilket gör det möjligt för dem att dela data och funktionalitet på ett effektivt sätt.
Node.js är i sin tur en miljö som kör JavaScript på serversidan, snarare än i webbläsaren. Det introducerade ett revolutionerande koncept kallat "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 till sist ett flexibelt ramverk för Node.js. Det ger dig en enkel API att bygga webbapplikationer och API:er med Node.js.
ExpressJS tillhandahåller exempelvis många praktiska funktioner som gör det enklare att bygga din server, till exempel routing, middlewares, hantering av begäran och svar, och mycket mer.
Installation av Node.js, npm och ExpressJS
Innan du kan börja utveckla ditt API behöver förbereda din utvecklingsmiljö. I den här delen kommer vi att gå igenom hur man installerar Node.js och npm (node package manager), och senare hur man installerar ExpressJS via npm.
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 man sedan designar API-endpoints, och kan implementera 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 så är nästa steg att utveckla den verkliga funkionen 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 att skapa endpoints och hantera data. Det är också viktigt att tänka på säkerhet och följa bästa praxis för att säkerställa att ditt API är robust, skalbart och säkert.
I den här delen kommer vi att gå igenom några bästa praxis för att bygga ett API med Node.js och ExpressJS, och vi kommer att prata om säkerhetsmetoder som JWT (JSON Web Token) för att skydda ditt API.
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.
- 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 du bygger ett API som kräver användarautentisering, är det viktigt att du skyddar dina endpoints så att endast behöriga användare kan komma åt dem.
En populär metod för att göra detta är att använda JWT (JSON Web Token).
JWT kan användas för säker överföring av information mellan parter som JSON-objekt. Denna information kan verifieras och betrodd eftersom den är digitalt signerad.
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.