Komplett guide för att skapa ett REST API med avancerad Typescript och MongoDB.
npm install -g typescript
mkdir mitt-rest-api && cd mitt-rest-api
npm init -y
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"
]
}
npm install express mongoose @types/express @types/mongoose
src
-mapp i rotmappen för ditt projekt och navigera till den: mkdir src && cd src
Inuti src
-mappen, skapa en index.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}`);
});
npm install mongodb
Importera mongodb
-modulen och anslut till din MongoDB-databas i index.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');
}
});
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' });
}
});
tsc
node dist/index.js
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