Node.js vs Deno
JavaScript dünyasının iki güçlü runtime'ı: olgun ekosistemiyle Node.js ve güvenlik odaklı modern mimarisiyle Deno. Backend projeniz için hangisi doğru tercih?
Python'ın en hızlı web framework'ü
Node.js'in minimalist web framework'ü
# FastAPI - Kullanıcı CRUD API
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, EmailStr
app = FastAPI(title="Kullanıcı API")
class UserCreate(BaseModel):
name: str
email: EmailStr
age: int
class UserResponse(UserCreate):
id: int
users_db: dict[int, UserResponse] = {}
@app.post("/users", response_model=UserResponse, status_code=201)
async def create_user(user: UserCreate):
user_id = len(users_db) + 1
db_user = UserResponse(id=user_id, **user.model_dump())
users_db[user_id] = db_user
return db_user
@app.get("/users/{user_id}", response_model=UserResponse)
async def get_user(user_id: int):
if user_id not in users_db:
raise HTTPException(status_code=404, detail="Kullanıcı bulunamadı")
return users_db[user_id]// Express.js - Kullanıcı CRUD API (TypeScript)
import express, { Request, Response } from 'express';
const app = express();
app.use(express.json());
interface User {
id: number;
name: string;
email: string;
age: number;
}
const usersDb: Map<number, User> = new Map();
let nextId = 1;
app.post('/users', (req: Request, res: Response) => {
const { name, email, age } = req.body;
if (!name || !email || !age) {
return res.status(400).json({ error: 'Eksik alan' });
}
const user: User = { id: nextId++, name, email, age };
usersDb.set(user.id, user);
res.status(201).json(user);
});
app.get('/users/:id', (req: Request, res: Response) => {
const user = usersDb.get(Number(req.params.id));
if (!user) return res.status(404).json({ error: 'Bulunamadı' });
res.json(user);
});
app.listen(3000);FastAPI, özellikle ML/AI entegrasyonu ve otomatik dokümantasyon isteyen Python ekipleri için mükemmel bir tercih. Express.js ise JavaScript ekosistemiyle çalışan, esnek ve hızlı prototipleme isteyen projeler için hâlâ en yaygın tercih olmaya devam ediyor. Dil tercihi genellikle belirleyici faktördür.
FastAPI, Starlette ve Uvicorn üzerine inşa edilmiştir. TechEmpower benchmark'larında Node.js/Express'e yakın veya üstünde performans gösterir. Async endpoint'lerde IO yoğun işlemlerde Node.js ile rekabet edebilir.