Komplett guide för att skapa ett REST API med avancerad Typescript och MongoDB.
-
Installera Node.js och Typescript:
- Se till att du har Node.js installerat på din dator. Du kan ladda ner det från den officiella Node.js webbplatsen.
- För att arbeta med Typescript, installera det globalt genom att köra följande kommando i terminalen:
npm install -g typescript
-
Skapa ett projekt:
- Skapa en ny mapp för ditt projekt och navigera till den genom att köra kommandot:
mkdir mitt-rest-api && cd mitt-rest-api
- När du är inne i projektmappen, initiera ett nytt Node.js-projekt genom att köra
npm init -y
- Skapa en ny mapp för ditt projekt och navigera till den genom att köra kommandot:
-
Konfigurera Typescript:
-
Skapa en
tsconfig.json
-fil i rotmappen för ditt projekt. -
Lägg till följande konfiguration i
tsconfig.json
:{ "compilerOptions": { "target": "es6", "module": "commonjs", "outDir": "dist", "sourceMap": true }, "include": [ "src/**/*.ts" ], "exclude": [ "node_modules" ] }
-
-
Installera nödvändiga bibliotek:
- Installera de nödvändiga biblioteken för att bygga REST API:et genom att köra följande kommando:
npm install express mongoose @types/express @types/mongoose
- Installera de nödvändiga biblioteken för att bygga REST API:et genom att köra följande kommando:
-
Konfigurera Express:
-
Skapa en
src
-mapp i rotmappen för ditt projekt och navigera till den:mkdir src && cd src
-
Inuti
src
-mappen, skapa enindex.ts
-fil och konfigurera en grundläggande Express-server:import express, { Application, Request, Response } from 'express'; const app: Application = express(); const port = 3000; app.use(express.json()); app.listen(port, () => { console.log(`Server körs på port ${port}`); });
-
-
Anslut till MongoDB:
-
Installera MongoDB-drivrutinen för Node.js genom att köra:
npm install mongodb
-
Importera
mongodb
-modulen och anslut till din MongoDB-databas iindex.ts
:import { MongoClient, Db, Collection, ObjectId } from 'mongodb'; const uri = 'mongodb://localhost:27017'; const dbName = 'mittDatabase'; let db: Db; let usersCollection: Collection; const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); client.connect((err) => { if (err) { console.error('Misslyckades med anslutning till MongoDB:', err); } else { console.log('Ansluten till MongoDB'); db = client.db(dbName); usersCollection = db.collection('users'); } });
-
-
Lägg till CRUD-operationer:
-
Inuti
client.connect
-callbacken kan du börja definiera dina REST API-rutter och deras motsvarande logik. -
Låt oss skapa exempel på rutter för CRUD-operationer (Create, Read, Update, Delete) för en MongoDB-samling som kallas
users
:// Hämta alla användare app.get('/users', async (req: Request, res: Response) => { try { const allUsers = await usersCollection.find({}).toArray(); res.json(allUsers); } catch (error) { console.error('Misslyckades med att hämta användare:', error); res.status(500).json({ error: 'Misslyckades med att hämta användare' }); } }); // Skapa en ny användare app.post('/users', async (req: Request, res: Response) => { const newUser = req.body; try { const result = await usersCollection.insertOne(newUser); res.json(result.ops[0]); } catch (error) { console.error('Misslyckades med att skapa användare:', error); res.status(500).json({ error: 'Misslyckades med att skapa användare' }); } }); // Uppdatera en användare app.put('/users/:id', async (req: Request, res: Response) => { const userId = req.params.id; const updatedUser = req.body; try { const result = await usersCollection.updateOne({ _id: new ObjectId(userId) }, { $set: updatedUser }); res.json(result); } catch (error) { console.error('Misslyckades med att uppdatera användare:', error); res.status(500).json({ error: 'Misslyckades med att uppdatera användare' }); } }); // Ta bort en användare app.delete('/users/:id', async (req: Request, res: Response) => { const userId = req.params.id; try { const result = await usersCollection.deleteOne({ _id: new ObjectId(userId) }); res.json(result); } catch (error) { console.error('Misslyckades med att ta bort användare:', error); res.status(500).json({ error: 'Misslyckades med att ta bort användare' }); } });
-
-
Bygg och kör applikationen:
- Gå tillbaka till rotmappen för ditt projekt.
- Kompilerar Typescript-koden till JavaScript genom att köra:
tsc
- Starta servern genom att köra:
node dist/index.js
- Besök
http://localhost:3000/users
i din webbläsare eller använd verktyg som Postman för att testa APIet.
Skapa ett REST API med Typescript och MongoDB för att hantera en samling av produkter. Produkterna ska ha följande egenskaper:
id
(string)name
(string)price
(number)description
(string)imageUrl
(string)inStock
(boolean)category
(string)tags
(string[])
APIet ska ha följande routes:
GET /products
- Hämta alla produkterGET /products/:id
- Hämta en specifik produktPOST /products
- Skapa en ny produktPUT /products/:id
- Uppdatera en produktDELETE /products/:id
- Ta bort en produktGET /products/categories
- Hämta alla kategorierGET /products/categories/:category
- Hämta alla produkter i en specifik kategoriGET /products/tags
- Hämta alla taggarGET /products/tags/:tag
- Hämta alla produkter med en specifik taggGET /products/search
- Sök efter produkter