Pazartesi - Cumartesi: 09:00 - 18:00

27.03.2026 14 dk okuma API Geliştirme

RESTful API Nedir?

REST (Representational State Transfer), web servislerinin standart HTTP metodları (GET, POST, PUT, DELETE) ile iletişim kurmasını sağlayan bir mimari stildir. Modern web ve mobil uygulamaların omurgasını oluşturur.

1. Basit Router

<?php
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE');

$method = $_SERVER['REQUEST_METHOD'];
$path   = trim($_SERVER['PATH_INFO'] ?? '/', '/');
$parts  = explode('/', $path);

switch ($parts[0]) {
    case 'products':
        if ($method === 'GET' && isset($parts[1]))
            get_product($parts[1]);
        elseif ($method === 'GET')
            list_products();
        elseif ($method === 'POST')
            create_product();
        break;
}

2. JWT Token Oluşturma

function create_jwt($user_id, $secret) {
    $header = base64_encode(
        json_encode(['alg' => 'HS256', 'typ' => 'JWT'])
    );

    $payload = base64_encode(
        json_encode([
            'sub' => $user_id,
            'iat' => time(),
            'exp' => time() + 3600,
        ])
    );

    $signature = base64_encode(
        hash_hmac('sha256',
            $header . '.' . $payload,
            $secret, true)
    );

    return $header . '.' . $payload . '.' . $signature;
}

3. JWT Doğrulama Middleware

function verify_jwt($token, $secret) {
    $parts = explode('.', $token);
    if (count($parts) !== 3) return false;

    [$header, $payload, $sig] = $parts;

    $expected = base64_encode(
        hash_hmac('sha256',
            $header . '.' . $payload,
            $secret, true)
    );

    if (!hash_equals($expected, $sig))
        return false;

    $data = json_decode(
        base64_decode($payload), true
    );

    if ($data['exp'] < time())
        return false;

    return $data;
}

function auth_middleware() {
    $auth = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
    if (!preg_match('/Bearer\s+(\S+)/', $auth, $m)) {
        http_response_code(401);
        echo json_encode(['error' => 'Token gerekli']);
        exit;
    }
    return verify_jwt($m[1], JWT_SECRET);
}
Best Practice: API response'larınızda tutarlı bir format kullanın: success, data, message ve error alanları standart olsun.

Sıkça Sorulan Sorular

REST API ile SOAP arasındaki fark nedir?
REST daha hafif ve esnek, JSON kullanır. SOAP daha katı, XML tabanlıdır ve kurumsal ortamlarda tercih edilir.
JWT token süresi ne kadar olmalı?
Access token için 15-60 dakika, refresh token için 7-30 gün önerilir.
Rate limiting neden önemlidir?
API'nizi kötüye kullanıma ve DDoS saldırılarına karşı korur. IP başına dakikada 60 istek yaygın bir limittir.
CORS nedir ve nasıl ayarlanır?
Cross-Origin Resource Sharing, farklı domain'lerden API'ye erişimi kontrol eder. Access-Control-Allow-Origin header'ı ile ayarlanır.
Mesaj Gönderin0850 307 34 58
Hemen Arayın0850 307 34 58
Hemen Arayın WhatsApp