Komplett guide för att skapa ett REST API med avancerad Typescript och MongoDB.
npm install -g typescriptmkdir mitt-rest-api && cd mitt-rest-apinpm init -ytsconfig.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/mongoosesrc-mapp i rotmappen för ditt projekt och navigera till den: mkdir src && cd srcInuti 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 mongodbImportera 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' });
}
});
tscnode dist/index.jshttp://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