“Frontend React uygulamanızın Laravel backend’den verileri almadığını hiç düşündünüz mü? Ya da Postman yanıt alamadığında dolanıp durmuş mu? Rahatlayın, yalnız değilsiniz! Birçok Laravel başlangıcı aynı sorunu yaşıyor. İşte burada Laravel API imdadınıza yetişiyor.”
React frontend ve Laravel backend tasarlarken, verilerin görünmemesi API’nın hazır olmamasından kaynaklanıyorsa, oldukça sinir bozucu olabilir. Bu makale, bu karmaşayı aşmanız için kapsamlı bir çözüm sunuyor!
API Neden Önemlidir?
API Neden Önemlidir?
- API, frontend ve backend arasında bir köprü işlevi görür.
- Tek Sayfa Uygulamaları (SPA) ve mobil uygulamalar için zorunludur.
- API olmadan, veriler kullanıcıya gösterilemez.
Laravel API Örneği: Makale CRUD
Laravel API Örneği: Makale CRUD
Bu yazıda, Laravel kullanarak basit ama etkili bir Makale API’si oluşturacağız. Blog, haber veya deneme projeleri için oldukça kullanışlıdır.
Laravel API Çalışma Akışı
Laravel API Çalışma Akışı
Yazmaya başlamadan önce akışı anlayın:
Client (Postman / Frontend)
→ HTTP İsteği
→ API Yolu
→ Kontrolcü
→ Model
→ Veritabanı
→ JSON Yanıtı
Yani, her seferinde istemci verileri ister, istek yol üzerinden geçer, kontrolcü tarafından işlenir, model/veritabanından veriler alınır ve yanıt JSON olarak geri döner.
Adım 1: Laravel Projesini Kurun
Adım 1: Laravel Projesini Kurun
- En son Laravel sürümüne (örneğin, 10.x) sahip olun.
- Composer’ın yüklü olduğundan emin olun.
composer create-project --prefer-dist laravel/laravel öğren-api
Veritabanını .env dosyasında ayarlayın:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=öğren_api
DB_USERNAME=root
DB_PASSWORD=
Adım 2: Model ve Migration Oluşturun
Adım 2: Model ve Migration Oluşturun
Neden -m ile oluşturmalıyız?
-m, otomatik olarak migration dosyası oluşturur; manuel oluşturmanıza gerek kalmaz.
php artisan make:model Article -m
Migration dosyasını database/migrations/..._create_articles_table.php dosyasında düzenleyin:
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
Migration’ı çalıştırın:
php artisan migrate
$fillable‘ın Önemi
$fillable‘ın ÖnemiModel Article.php dosyasına ekleyin:
protected $fillable = ['title', 'content'];
Bu neden gerekli?
Belirtilmezse, Laravel verileri kaydedemez çünkü kitlesel atama koruması vardır. Bu, verilerin veritabanına girerken gerçekten izin verilenleri doğrulama amacı güder.
Adım 3: Makale API Kontrolcusu Oluşturma
Adım 3: Makale API Kontrolcusu Oluşturma
Kaynak kontrolcüsünü oluşturun:
php artisan make:controller Api/ArticleController --resource
Ana işlevlerin açıklaması:
-
index()→ Veritabanından tüm makaleleri alır, JSON olarak geri döner. -
store()→ Yeni makale kaydeder. Genellikle istekteki verileri alır, doğrular ve ardından kaydeder. -
show($id)→ ID’ye göre makale detaylarını alır. -
update($id)→ Belirli bir makalenin verilerini değiştirir. -
destroy($id)→ Makaleyi siler.
Kısa bir örnek uygulama:
public function index() {
return Article::all();
}
public function store(Request $request) {
// Önce doğrulayın
$validated = $request->validate([
'title' => 'required',
'content' => 'required',
]);
// Veriyi kaydet
$article = Article::create($validated);
return response()->json($article, 201);
}
public function show($id) {
return Article::findOrFail($id);
}
public function update(Request $request, $id) {
$article = Article::findOrFail($id);
$article->update($request->all());
return response()->json($article);
}
public function destroy($id) {
Article::destroy($id);
return response()->json(null, 204);
}
Adım 4: API Yolu Ekleme
Adım 4: API Yolu Ekleme
routes/api.php dosyasını düzenleyin:
Route::apiResource('articles', App\Http\Controllers\Api\ArticleController::class);
Postman ile API Testi Yapma
Postman ile API Testi Yapma
Endpoint’leri Postman/curl ile kontrol edin:
| Yöntem | Endpoint | Fonksiyon | Örnek İstek | Örnek Yanıt |
|---|---|---|---|---|
| GET | /api/articles | Tüm makaleleri listele | – | [ {...} ] |
| POST | /api/articles | Yeni makale kaydet | { "title": "Laravel API Öğren", "content": "Kapsamlı ve kolay bir eğitim!" } | { "id": 1, ... } |
| GET | /api/articles/{id} | Makale detayları | – | { "id": 1, ... } |
| PUT | /api/articles/{id} | Makale güncelle | { "title": "Güncelledi", "content": "İçeriği düzenle" } | { "id": 1, ... } |
| DELETE | /api/articles/{id} | Makale sil | – | null |
Tam Örnek İstek & Yanıt
Tam Örnek İstek & Yanıt
POST İsteği:
POST /api/articles
Content-Type: application/json
{
"title": "Laravel API Öğren",
"content": "Kapsamlı ve kolay bir eğitim!"
}
Yanıt 201 Oluşturuldu:
{
"id": 1,
"title": "Laravel API Öğren",
"content": "Kapsamlı ve kolay bir eğitim!",
"created_at": "2026-01-10"
}
GET İsteği:
GET /api/articles/1
Yanıt 200 Tamam:
{
"id": 1,
"title": "Laravel API Öğren",
"content": "Kapsamlı ve kolay bir eğitim!",
"created_at": "2026-01-10"
}
PUT İsteği:
PUT /api/articles/1
Content-Type: application/json
{
"title": "Güncelledi Başlık",
"content": "İçerik güncellendi!"
}
Yanıt 200 Tamam:
{
"id": 1,
"title": "Güncelledi Başlık",
"content": "İçerik güncellendi!",
"created_at": "2026-01-10"
}
DELETE İsteği:
DELETE /api/articles/1
Yanıt 204 İçerik Yok:
null
Laravel’de Hata Yönetimi & Durum Kodları
Laravel’de Hata Yönetimi & Durum Kodları
Laravel, işlemlere göre otomatik olarak durum kodu gönderir:
- 200 Tamam: Veri başarıyla alındı/güncellendi
- 201 Oluşturuldu: Veri başarıyla oluşturuldu
- 204 İçerik Yok: Veri başarıyla silindi
- 404 Bulundu: Veri bulunamadı
- 422 İşlenemez Varlık: Doğrulama başarısız
- 500 Sunucu Hatası: Sunucu hatası
Hata yanıtı örneği:
{
"message": "Model [App\\Models\\Article] için sorgu sonuçları bulunamadı 99"
}
Tavsiyeler: Veri bulunamadığında otomatik olarak 404 yanıtı almak için findOrFail() kullanın.
Başlangıçların Yaygın Hataları
Başlangıçların Yaygın Hataları
“Laravel API oluştururken başlangıçların yaptığı yaygın hatalar:”
- Modelde
$fillableeklemeyi unutmak, bu nedenle veriler kaydedilemez. - Veri kaydetmek için GET yöntemini kullanmak (POST kullanılmalı).
- Girdi doğrulaması yapmamak, verilerin düzensiz olmasına neden olur.
- Bütün alanları filtre olmadan açığa çıkarmak.
.envdosyasında yanlış yapılandırma (veritabanı, port, kullanıcı/parola).- Yolu
web.phpdosyasında çalıştırmak,api.php‘da değil. - Yapılandırmayı değiştirdikten sonra sunucuyu yeniden başlatmayı unutmak.
Tavsiyeler: Yanıtlardaki hataları her zaman kontrol edin, yöntemin ve alanların doğru olduğundan emin olun, ve ortam yapılandırmanızı kontrol edin!
Bir Sonraki Adım: API’nizi Geliştirin!
Bir Sonraki Adım: API’nizi Geliştirin!
CRUD’dan ileri gitmeyin. Keşfetmeye çalışın:
- Sanctum / Auth: API’nizi güvenli hale getirin.
- API Kaynağı: Yanıt formatını daha düzenli hale getirin.
- Paginasyon: Çok sayıda veri için.
- Rate Limiting: Spam yapılmasını önlemek için.
Devam eden makaleleri bekleyin!
🚀 Tartışalım & Paylaşalım!
🚀 Tartışalım & Paylaşalım!
Belirli bir adımda zorlanıyorsanız, yorumda belirtin! Laravel API oluşturma deneyimlerinizi de paylaşın, ya da sonraki konular için talepleri (kimlik doğrulama, API kaynakları, sayfalama vb.) iletin.
Ayrıca, bu makaleyi öğrenen arkadaşlarınıza takip etmeyi ve paylaşmayı unutmayın!
Kısa Yapı
Kısa Yapı
- Başlangıçların sıkça karşılaştığı sorunlar
- Ne yapacağımız
- Laravel API akış şeması
- Kısa kurulum
- Adım adım CRUD API
- API testi
- Yaygın hatalar
- Sonraki adım / ilerleme
Referanslar:
Kaynak: Orijinal Makale
- API Neden Önemlidir?
- Laravel API Örneği: Makale CRUD
- Laravel API Çalışma Akışı
- Adım 1: Laravel Projesini Kurun
- Adım 2: Model ve Migration Oluşturun
- Adım 3: Makale API Kontrolcusu Oluşturma
- Adım 4: API Yolu Ekleme
- Postman ile API Testi Yapma
- Başlangıçların Yaygın Hataları
- Bir Sonraki Adım: API’nizi Geliştirin!
- 🚀 Tartışalım & Paylaşalım!
- Kısa Yapı


