# Backend API

> 🌐 Backend API

- Skill: `vuralserhat86/backend-api` (Agent Skill)
- Install (CLI): `npx skillmds@latest add vuralserhat86/backend-api`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vuralserhat86/backend-api/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: vuralserhat86 (https://skillmd.com/u/vuralserhat86)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vuralserhat86/backend-api

---


# 🌐 Backend API

> REST API tasarımı ve güvenlik best practices.

---

## 📋 1. RESTful Endpoints

```
GET    /api/v1/users           # List
GET    /api/v1/users/:id       # Get one
POST   /api/v1/users           # Create
PATCH  /api/v1/users/:id       # Partial update
DELETE /api/v1/users/:id       # Delete
```

### HTTP Status Codes
| Kod | Kullanım |
|-----|----------|
| 200 | GET, PATCH, PUT başarılı |
| 201 | POST Created |
| 204 | DELETE No Content |
| 400 | Validation hatası |
| 401 | Authentication gerekli |
| 403 | Yetki yok |
| 404 | Bulunamadı |
| 429 | Rate limit |

---

## ✅ 2. Input Validation (Zod)

```typescript
import { z } from 'zod';

const CreateUserSchema = z.object({
  email: z.string().email(),
  password: z.string().min(8),
  name: z.string().min(2).max(100),
});

type CreateUserDto = z.infer<typeof CreateUserSchema>;
```

---

## 🔐 3. Güvenlik

### Security Headers
```typescript
import helmet from 'helmet';
import rateLimit from 'express-rate-limit';

app.use(helmet());
app.use(rateLimit({
  windowMs: 15 * 60 * 1000,
  max: 100,
}));
```

### JWT Authentication
```typescript
function authMiddleware(req, res, next) {
  const token = req.headers.authorization?.replace('Bearer ', '');
  if (!token) return res.status(401).json({ error: 'Token required' });
  
  const decoded = jwt.verify(token, env.JWT_SECRET);
  req.user = decoded;
  next();
}
```

---

## 📦 4. Response Format

```typescript
interface SuccessResponse<T> {
  success: true;
  data: T;
  meta?: { page, limit, total };
}

interface ErrorResponse {
  success: false;
  error: { code: string; message: string };
}
```

---

## 🔗 İlgili Skill'ler
- `backend-core` - TypeScript, yapı
- `backend-database` - Repository, caching

---

- `backend-database` - Repository, caching

---

*Backend API v1.2 - Verified*

## 🔄 Workflow

> **Kaynak:** [Node.js Best Practices (Goldberg)](https://github.com/goldbergyoni/nodebestpractices#-2-metrics-and-logging)

### Aşama 1: Interface Design (Contract First)
- [ ] **Specs**: OpenAPI (Swagger) veya Zod şeması ile input/output tanımla.
- [ ] **Roadmap**: Endpoint listesini ve HTTP metodlarını belirle.

### Aşama 2: Layered Implementation
- [ ] **Controller**: Sadece HTTP request/response yönet, business logic yazma.
- [ ] **Service**: Tüm iş mantığını buraya koy (Reusable).
- [ ] **DAL**: Veritabanı erişimini soyutla.

### Aşama 3: Security & Hardening
- [ ] **Middleware**: Helmet, Rate Limiter ve CORS ayarlarını yap.
- [ ] **Validation**: Gelen her veriyi (Body, Query, Params) Zod ile doğrula.
- [ ] **Error**: Global Error Handler kur ve user-friendly mesaj dön.

### Kontrol Noktaları
| Aşama | Doğrulama |
|-------|-----------|
| 1 | API dokümantasyonu koddan önce mi hazırlandı? |
| 2 | Controller dosyasında hiç SQL/ORM kodu var mı? (Olmamalı) |
| 3 | 500 hatası dönünce stack trace gizleniyor mu? |

