Adım 1: Laravel Projesi Oluşturma
Her şeyin başı bir Laravel projesi oluşturmakla başlar. Eğer bilgisayarınızda Laravel kurulu değilse, ilk işiniz bunu kurmak olacaktır. Laravel'ı kurmanın en kolay yolu, Composer kullanmaktır. Eğer Composer kurulu değilse, [composer.org](https://getcomposer.org) adresinden Composer'ı indirip kurabilirsiniz.
Kurulum tamamlandığında terminal veya komut satırında şu komutu çalıştırarak yeni bir Laravel projesi oluşturabilirsiniz:
composer create-project --prefer-dist laravel/laravel api-project
Bu komut, Laravel'ın en son sürümünü indirip kuracak ve `api-project` isimli bir klasör içinde yeni bir proje oluşturacaktır. Artık Laravel API geliştirmeye başlamak için hazırız.
Adım 2: API Route'larını Tanımlama
Laravel'da API geliştirmek, Laravel'in güzelliklerinden biridir çünkü API'ler için özel olarak yapılandırılmış bir `routes/api.php` dosyanız vardır. Bu dosyada, API isteklerine nasıl yanıt verileceğini tanımlayacağız. Örneğin, basit bir "Merhaba Dünya" API'si için şu kodu ekleyebilirsiniz:
Route::get('/hello', function () {
return response()->json(['message' => 'Merhaba Dünya!']);
});
Yukarıdaki örnekte, `/hello` endpoint'ine yapılan GET isteği, bir JSON formatında "Merhaba Dünya!" mesajını dönecek. Bu kadar basit! Laravel, `response()->json()` fonksiyonu sayesinde hızlıca JSON formatında veri döndürmeyi mümkün kılar.
Adım 3: Controller Oluşturma
Proje biraz daha büyüdükçe, işlerinizi düzenlemek için controller'lar kullanmanız faydalı olacaktır. Laravel, komut satırından kolayca controller oluşturmanıza olanak tanır. Hadi bir API controller'ı oluşturalım:
php artisan make:controller Api/HelloController
Bu komut, `Api` adında bir klasör içinde `HelloController` isimli bir controller oluşturur. Şimdi bu controller'ı kullanarak API endpoint'imizi daha düzenli hale getirebiliriz:
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
return response()->json(['message' => 'Merhaba Dünya!']);
}
}
Artık `HelloController`'da bir `index` metodu var ve bu metod JSON formatında "Merhaba Dünya!" döndürecek. Şimdi route dosyamızı güncelleyerek bu controller'ı kullanabiliriz:
Route::get('/hello', [HelloController::class, 'index']);
Adım 4: API'yi Güvenli Hale Getirme
Bir API geliştirirken güvenlik her zaman öncelikli olmalıdır. Laravel, API güvenliği için çeşitli yöntemler sunar. En yaygın kullanılan yöntemlerden biri, token tabanlı kimlik doğrulamasıdır. Laravel, `sanctum` paketini kullanarak kolayca token tabanlı kimlik doğrulaması eklemenizi sağlar.
İlk olarak, `sanctum` paketini yükleyin:
composer require laravel/sanctum
Sonrasında `sanctum` konfigürasyon dosyasını yayınlamak için şu komutu çalıştırın:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Bu işlem, `config/sanctum.php` dosyasını oluşturur. Artık token tabanlı kimlik doğrulama kullanmaya hazırsınız.
Adım 5: API ile CRUD İşlemleri Yapma
Gerçek dünyada bir API genellikle sadece veri döndürmekle kalmaz, aynı zamanda veri ekleme, silme ve güncelleme işlemleri de yapar. İşte Laravel ile API'de CRUD (Create, Read, Update, Delete) işlemleri nasıl yapılır?
Öncelikle, bir `Post` modeline ihtiyacımız var. Laravel, model ve migration dosyalarını birlikte oluşturmayı kolaylaştırır:
php artisan make:model Post -m
Bu komut, `Post` adında bir model ve migration dosyası oluşturur. Migration dosyasını düzenleyerek veri tabanında bir `posts` tablosu oluşturabilirsiniz. Örnek bir migration şu şekilde olabilir:
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
Modelinizi ve migration dosyanızı oluşturduktan sonra veri tabanında `posts` tablosu olacak. Şimdi CRUD işlemlerini controller'ımıza ekleyelim:
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index()
{
return response()->json(Post::all());
}
public function store(Request $request)
{
$post = Post::create($request->all());
return response()->json($post, 201);
}
public function show($id)
{
return response()->json(Post::find($id));
}
public function update(Request $request, $id)
{
$post = Post::find($id);
$post->update($request->all());
return response()->json($post);
}
public function destroy($id)
{
Post::destroy($id);
return response()->json(null, 204);
}
}
Yukarıdaki controller'da, `Post` modelini kullanarak CRUD işlemlerini kolayca gerçekleştirebiliyoruz. Şimdi `routes/api.php` dosyanızı güncelleyerek bu işlemleri çalıştırabilirsiniz:
Route::resource('posts', PostController::class);
Adım 6: API Test Etme
Her şeyin yolunda olup olmadığını görmek için API'nizi test etmeniz gerekecek. Laravel, API testleri için `phpunit`'i kullanmanızı sağlar. Testleriniz için aşağıdaki komutla test dosyası oluşturabilirsiniz:
php artisan make:test PostApiTest
Bu test dosyasına gerekli testleri ekleyebilir ve API'nizin düzgün çalışıp çalışmadığını kontrol edebilirsiniz.
Sonuç
Laravel, API geliştirmeyi son derece kolay ve hızlı hale getiriyor. Hem küçük hem de büyük projelerde kullanabileceğiniz bu güçlü araç, modern web uygulamalarının olmazsa olmazı olan API'leri yaratmak için mükemmel bir seçim. Laravel ile API geliştirmek için sadece birkaç adımda mükemmel bir çözüm elde edebilirsiniz.