PHP ile REST API Geliştirme: Kapsamlı Rehber 2025

PHP ile REST API Geliştirme: Kapsamlı Rehber 2025

PHP 17 Oca 2025 Ahmet Halit DURUSOY Ahmet Halit DURUSOY 6 dakika okuma
Paylaş:

Modern web geliştirme dünyasında PHP REST API oluşturma becerisi, yazılım geliştiriciler için vazgeçilmez bir yetkinlik haline geldi. Günümüzde mobil uygulamalardan tek sayfa web uygulamalarına kadar birçok modern yazılım projesi, güvenilir ve iyi tasarlanmış API'lere ihtiyaç duymaktadır. Bu kapsamlı rehberde, PHP kullanarak nasıl profesyonel bir REST API geliştirebileceğinizi adım adım öğreneceksiniz.

PHP REST API'nin Temelleri ve Önemi

REST API geliştirme, modern web uygulamalarının temel yapı taşlarından biridir. PHP ile REST API geliştirme süreci, hem başlangıç seviyesindeki geliştiriciler için öğrenmesi kolay, hem de deneyimli programcılar için güçlü çözümler sunabilecek bir yaklaşım sunar. Basit PHP projeleri ile başlayarak, karmaşık kurumsal uygulamalara kadar ölçeklenebilir API'ler oluşturabilirsiniz.

REST API Geliştirme Sürecinde PHP'nin Avantajları

PHP eğitim sürecinizde REST API geliştirmeyi öğrenmek, size şu avantajları sağlayacaktır:

  • Geniş geliştirici topluluğu ve zengin dokümantasyon
  • Kolay öğrenme eğrisi ve hızlı geliştirme imkanı
  • Güçlü framework desteği (Laravel, Symfony gibi)
  • Yaygın hosting desteği ve düşük maliyet
  • Büyük şirketlerde yaygın kullanım

REST API’nin Temelleri

REST API, Representational State Transfer (Temsili Durum Transferi) anlamına gelir. Bir REST API, HTTP protokolünü kullanarak istemci ve sunucu arasında veri aktarımını sağlar.

REST API’nin Ana İlkeleri:

  • Stateless (Durumsuz): Sunucu her istek için istemciden bağımsız çalışır.
  • Kaynak Odaklı Mimari: URL’ler bir kaynağı temsil eder.
  • HTTP Metodları: GET, POST, PUT, DELETE gibi metodlarla CRUD işlemleri gerçekleştirilir.
  • JSON Formatı: Hafif ve okunabilir bir veri formatı olan JSON genellikle veri alışverişi için kullanılır.

Proje Yapısı ve Gereksinimler

Gereksinimler

  • PHP 7.4 veya üstü
  • Composer
  • MySQL veritabanı
  • Temel PHP bilgisi

Önerilen Proje Yapısı

/api
  /config
    - database.php
  /controllers
    - ProductController.php
  /models
    - Product.php
  /routes
    - api.php
  - index.php
  • index.php: Gelen HTTP isteklerini işler ve yönlendirir.
  • config: Veritabanı bağlantısı ve yapılandırmalar için kullanılır.
  • controllers: İş mantığı burada tanımlanır.
  • models: Veritabanı işlemleri için sınıflar içerir.

Veritabanı Bağlantısı ve Temel Yapılandırma

<?php
class Database {
    private $host = "localhost";
    private $db_name = "api_db";
    private $username = "root";
    private $password = "";
    public $conn;

    public function getConnection() {
        $this->conn = null;
        try {
            $this->conn = new PDO(
                "mysql:host=" . $this->host . ";dbname=" . $this->db_name,
                $this->username,
                $this->password
            );
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $e) {
            echo "Connection Error: " . $e->getMessage();
        }
        return $this->conn;
    }
}

Model Katmanı Oluşturma

Model katmanı, veritabanı işlemlerinin yönetildiği yerdir. Aşağıda örnek bir Product modeli bulunmaktadır:

<?php
class Product {
    private $conn;
    private $table_name = "products";

    public $id;
    public $name;
    public $description;
    public $price;

    public function __construct($db) {
        $this->conn = $db;
    }

    // Ürünleri Listeleme
    public function read() {
        $query = "SELECT * FROM " . $this->table_name;
        $stmt = $this->conn->prepare($query);
        $stmt->execute();
        return $stmt;
    }

    // Yeni Ürün Ekleme
    public function create() {
        $query = "INSERT INTO " . $this->table_name . " 
                 SET name=:name, description=:description, price=:price";
        
        $stmt = $this->conn->prepare($query);
        
        $stmt->bindParam(":name", $this->name);
        $stmt->bindParam(":description", $this->description);
        $stmt->bindParam(":price", $this->price);
        
        return $stmt->execute();
    }
}

Controller Yapısı ve Endpoint Yönetimi

Controller sınıfı, API isteklerini karşılayan ve gerekli işlemleri yöneten katmandır:

<?php
class ProductController {
    private $product;

    public function __construct($db) {
        $this->product = new Product($db);
    }

    public function index() {
        $result = $this->product->read();
        $products = $result->fetchAll(PDO::FETCH_ASSOC);
        
        echo json_encode($products);
    }

    public function store($data) {
        $this->product->name = $data['name'];
        $this->product->description = $data['description'];
        $this->product->price = $data['price'];

        if($this->product->create()) {
            echo json_encode(["message" => "Ürün başarıyla oluşturuldu."]);
        } else {
            echo json_encode(["message" => "Ürün oluşturulamadı."]);
        }
    }
}

API Güvenliği ve En İyi Uygulamalar

Modern web uygulamalarında PHP REST API güvenliği kritik öneme sahiptir. API'lerinizi güvence altına almak için şu adımları izlemelisiniz:

Güvenlik Önlemleri

  1. API Authentication
    • JWT (JSON Web Tokens) kullanımı
    • API Key doğrulaması
  2. Input Validation
    • XSS koruması
    • SQL Injection önleme
  3. CORS Yapılandırması
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST, GET, PUT, DELETE");
header("Access-Control-Max-Age: 3600");

Hata Yönetimi İçin Örnek Kod Yapısı

try {
    // API işlemleri
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        "message" => "Bir hata oluştu",
        "error" => $e->getMessage()
    ]);
}

PHP REST API Performans Optimizasyonu

Yüksek performanslı bir API için dikkat edilmesi gereken noktalar:

  1. Veritabanı Optimizasyonu
    • İndeksleme stratejileri
    • Sorgu optimizasyonu
    • Bağlantı havuzu yönetimi
  2. Önbellekleme
    • Redis veya Memcached kullanımı
    • Statik içerik önbellekleme
    • API yanıt önbellekleme
  3. Yük Yönetimi
    • Rate limiting
    • Load balancing
    • Mikroservis mimarisi

Test ve Dokümantasyon

  • Bir PHP REST API’nin çalıştığından emin olmak için aşağıdaki araçları kullanabilirsiniz:

  • Postman: API’nin GET, POST, PUT, DELETE işlemlerini test etmek için harika bir araçtır.

  • Browser veya cURL: Basit testler için kullanılabilir.

En İyi Uygulamalar

  1. API versiyonlama kullanın (örn. /api/v1/products)
  2. Uygun HTTP durum kodlarını kullanın
  3. İşlem limitlemesi (Rate Limiting) uygulayın
  4. Kapsamlı loglama yapın
  5. Cache mekanizması kullanın

PHP ile REST API geliştirme yolculuğunuzda, bu rehberde öğrendiğiniz temel kavramlar ve ileri seviye uygulamalar, modern web geliştirme pratiklerini başarıyla uygulamanıza yardımcı olacaktır. Güvenlik, performans ve kullanılabilirlik konularına özen göstererek, endüstri standartlarında API'ler geliştirebilirsiniz.

PHP REST API ile Sıkça Sorulan Sorular

REST API nedir?

REST API, web servislerinin HTTP protokolü üzerinden iletişim kurmasını sağlayan bir yöntemdir.

PHP ile REST API geliştirmek için hangi araçlar gereklidir?

PHP 7.4+, bir veritabanı (örneğin MySQL), Postman ve bir web sunucusu (Apache veya Nginx) kullanabilirsiniz.

REST API güvenliği nasıl sağlanır?

JWT ile doğrulama, HTTPS kullanımı ve güvenli veritabanı sorguları gibi yöntemler güvenliği artırır.

PHP REST API’de JSON neden kullanılır?

JSON, hafif ve kolay işlenebilir bir format olduğu için veri alışverişinde tercih edilir.

Veritabanı bağlantısı olmadan REST API oluşturabilir miyim?

Evet, ancak genelde API’ler bir veritabanına ihtiyaç duyar.

İlgili Etiketler

Çerez Ayarları

Deneyiminizi iyileştirmek için çerezler kullanıyoruz. Daha fazla bilgi için Çerez Politikamızı ziyaret edin.