Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Laravel’de Sanctum ile CRUD API Oluşturma (Adım Adım)
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Laravel’de Sanctum ile CRUD API Oluşturma (Adım Adım)

Yazılım

Laravel’de Sanctum ile CRUD API Oluşturma (Adım Adım)

teknomers
Son güncelleme: 11 Ocak 2026 21:00
teknomers
Paylaş
Paylaş

“Backend’den gelen verilere ihtiyaç duyan frontend uygulamanız var ama API henüz güvende değil mi? Bu yazıda, yalnızca kimlik doğrulaması yapılmış kullanıcıların erişebileceği Laravel ile bir API CRUD oluşturmayı öğreneceksiniz.”




Neden API CRUD için Sanctum Kullanmalıyız?

  • Veri daha güvenli, yalnızca giriş yapmış kullanıcıların erişimi var
  • SPA, mobil uygulama ve modern uygulamalar için uygun
  • Frontend ile entegrasyonu kolay (React, Vue, vb.)



Çalışma Durumu: Makale API’si (CRUD + Auth)

Giriş yaptıktan sonra yalnızca yetkilendirilmiş kullanıcıların erişebileceği API CRUD makale oluşturacağız.




Adım 1: Laravel & Sanctum Projesi Kurulumu

composer create-project --prefer-dist laravel/laravel belajar-api
cd belajar-api
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
Genişletme modu

Küçültme modu

Sanctum middleware’ini app/Http/Kernel.php dosyasındaki api grubuna ekleyin:

'api' => [
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],
Genişletme modu

Küçültme modu




Adım 2: Kullanıcı ve Makale Modeli Kurulumu (Sahiplik Verisi)



Kullanıcı

Model User sınıfına HasApiTokens trait’ini ekleyin ve makalelerle ilişkiyi tanımlayın:

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
    // ...

    public function articles() {
        return $this->hasMany(Article::class);
    }
}
Genişletme modu

Küçültme modu



Makale

php artisan make:model Article -m
Genişletme modu

Küçültme modu

Migrasyonu düzenleyin:

public function up()
{
    Schema::create('articles', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->foreignId('user_id')->constrained()->cascadeOnDelete();
        $table->timestamps();
    });
}
Genişletme modu

Küçültme modu

Migrasyonu çalıştırın:

php artisan migrate
Genişletme modu

Küçültme modu

Model Article.php içinde:

protected $fillable = ['title', 'content', 'user_id'];

public function user() {
    return $this->belongsTo(User::class);
}
Genişletme modu

Küçültme modu




Adım 3: Auth Kontrolörü (Kayıt, Giriş, Çıkış)

php artisan make:controller Api/AuthController
Genişletme modu

Küçültme modu

Kayıt, giriş ve çıkış için örnek fonksiyonlar:

public function register(Request $request) {
    $validated = $request->validate([
        'name' => 'required',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:6',
    ]);
    $user = User::create([
        'name' => $validated['name'],
        'email' => $validated['email'],
        'password' => bcrypt($validated[]),
    ]);
    $token = $user->createToken()->plainTextToken;
    return response()->json([=> $user, => $token], 201);
}

public function login(Request $request) {
    $credentials = $request->only(, );
    if (!auth()->attempt($credentials)) {
        return response()->json([=> ], 401);
    }
    $user = auth()->user();
    $user->tokens()->delete();
    $token = $user->createToken()->plainTextToken;
    return response()->json([=> $user, => $token]);
}

public function logout(Request $request) {
    $request->user()->currentAccessToken()->delete();
    return response()->json([=> ]);
}
Genişletme modu

Küçültme modu




Adım 4: Makale Kontrolörü (CRUD)

php artisan make:controller Api/ArticleController --resource
Genişletme modu

Küçültme modu

CRUD örnek fonksiyonları:

public function index() {
    return Article::all();
}

public function store(Request $request) {
    $validated = $request->validate([
        => ,
        => ,
    ]);
    // Sahiplik: makale giriş yapmış kullanıcının olmalı
    $article = $request->user()->articles()->create($validated);
    return response()->json($article, );
}

public function show(Request $request, $id) {
    $article = Article::findOrFail($id);
    // Yetkilendirme: yalnızca sahibi erişebilir
    if ($article->user_id !== $request->user()->id) {
        abort(403, );
    }
    return $article;
}

public function update(Request $request, $id) {
    $article = Article::findOrFail($id);
    if ($article->user_id !== $request->user()->id) {
        abort(, );
    }
    $validated = $request->validate([
        => ,
        => ,
    ]);
    $article->update($validated);
    return response()->json($article);
}

public function destroy(Request $request, $id) {
    $article = Article::findOrFail($id);
    if ($article->user_id !== $request->user()->id) {
        abort(, );
    }
    $article->delete();
    return response()->json(, );
}
Genişletme modu

Küçültme modu




Adım 5: API Yolu

routes/api.php dosyasını düzenleyin:

use App\Http\Controllers\Api\AuthController;
use App\Http\Controllers\Api\ArticleController;

Route::post(, [AuthController::, ]);
Route::post(, [AuthController::, ]);

Route::middleware()->group(function() {
    Route::post(, [AuthController::, ]);
    Route::apiResource(, ArticleController::);
});
Genişletme modu

Küçültme modu




Adım 6: Postman ile API CRUD Testi

MetodUç NoktaFonksiyon
GET/api/articlesTüm makaleleri listele
POST/api/articlesYeni makale kaydet
GET/api/articles/{id}Makale detayları
PUT/api/articles/{id}Makale güncelle
DELETE/api/articles/{id}Makale sil

Her istekte token’i header’da göndermeyi unutmayın:

Authorization: Bearer {token}
Genişletme modu

Küçültme modu



Örnek JSON Cevabı

{
    "id": 1,
    "title": "Laravel API Öğrenmeyi",
    "content": "Laravel API güçlü...",
    "user_id": 1,
    "created_at": "2026-01-11"
}
Genişletme modu

Küçültme modu




Neden Bu API Güvenli?

Sanctum + auth:sanctum ile, API’ye erişim token’sız yapılamaz. Her istekte kimlik doğrulaması yapılır ve yalnızca veri sahibinin kendi verilerini erişim ve değiştirme izni vardır.




Frontend’de Kullanmak İstersek

  • React: token’i localStorage’da saklayın, her istekte Authorization header’ında gönderin
  • Axios: interceptor kullanarak otomatik token ekleyin
  • Token’i kamu reposunda açığa çıkarmayın!



Hata Yönetimi & Durum Kodu

  • 201 Created: Veri başarıyla oluşturuldu
  • 200 OK: Veri başarıyla alındı/güncellendi
  • 204 No Content: Veri silindi
  • 401 Unauthorized: Token hatalı/sonlanmış
  • 404 Not Found: Veri bulunamadı
  • 422 Unprocessable Entity: Validasyon hatası



Yeni Başlayanların Yapabileceği Yaygın Hatalar

  • Migrasyon/publish Sanctum yapmayı unutmak
  • auth:sanctum middleware’ini unutmak
  • Header’da token göndermemek
  • Accept: application/json ayarını unutmak
  • Sadece GET olan bir endpoint’e POST istek göndermek
  • Route grubunu yanlış ayarlamak (middleware içinde olmalı)



Bir Sonraki Adım

  • API Kaynağı (daha düzenli yanıtlar)
  • Paginasyon ve filtreleme
  • Roller ve izinler
  • Thunder Client ile test etme



🚀 Tartışabilelim & Paylaşalım!

Bir adımda takıldığınızda yorum bırakın. Aynı zamanda Laravel’de API CRUD yapma deneyiminizi paylaşın veya daha ileri bir konu isteğinde bulunun (API Kaynağı, paginasyon, vb.).


Kaynaklar:

Kaynak: Orijinal Makale

Laravel Koleksiyonları: İş Mantığı İçin Neden Kullanıyorum (Sadece Kolaylık Değil)
En iyi Microsoft Edge özelliklerinden biri şimdi daha da iyi
Artisan Kaydırmaktan Bıktınız mı? php artisan list –mine ile Tanışın
Büyük Patlama Yenilikleri Yok: İki Ön Uç Çalıştırmak ve Akıl Sağlığını Koruma
Laravel Kurulumunu Kolaylaştırma
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Bağırsakta Kanseri Artıran Gizli Yaşlanma Programı Keşfedildi!
Sonraki Makale Code Vein 2’nin Görsel Tarzına Önem Veren Geliştirici Yaklaşımı

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Yöneticiye kod çalıştırma yetkisi vermeden, e-posta şablonlarını düzenleme izni verme.
Yazılım
Acil: GitHub, Microsoft Repolarında Şifre Hırsızlığı Yazılımını Engelledi
Siber Güvenlik
Meta’nın Konuşma Kuralları Değişti, Siyasi Tehditler Nasıl Artış Gösterdi?
Genel
Tayvan, Çin’e AI çip ihracatında suç yasağı düşünüyor
Donanım
Teknoloji Dünyasında Beklenmedik Star Trek İşbirliği
Oyun
Apple bazı uygulamaları App Store’dan kaldırabilir mi?
Genel
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?