Laravel

Laravel’de API Geliştirme ve API Authentikasyonu

Merhaba! Bu blog yazısında, Laravel framework’ünü kullanarak API geliştirme ve API authentikasyonunu nasıl gerçekleştireceğimizi detaylı bir şekilde ele alacağız. Laravel, güçlü bir PHP framework’üdür ve RESTful API’lerin hızlı ve güvenli bir şekilde geliştirilmesini sağlar. Hadi başlayalım!

Laravel API Geliştirme Temelleri

Laravel’de API geliştirmek için öncelikle projemize yeni bir API rotası eklememiz gerekiyor. Bunun için routes/api.php dosyasını açalım ve aşağıdaki kod örneğini ekleyelim:

use App\Http\Controllers\API\SampleController;

Route::get('/samples', [SampleController::class, 'index']);
Route::post('/samples', [SampleController::class, 'store']);
Route::get('/samples/{id}', [SampleController::class, 'show']);
Route::put('/samples/{id}', [SampleController::class, 'update']);
Route::delete('/samples/{id}', [SampleController::class, 'destroy']);

Yukarıdaki örnekte, /samples endpoint’lerine GET, POST, PUT ve DELETE isteklerini yönlendiriyoruz. Bu endpoint’ler, farklı HTTP metodlarına ve ilgili fonksiyonlara sahip bir SampleController tarafından işlenecektir.

namespace App\Http\Controllers\API;

use App\Models\Sample;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class SampleController extends Controller
{
    public function index()
    {
        $samples = Sample::all();

        return response()->json($samples);
    }

    public function store(Request $request)
    {
        $sample = Sample::create($request->all());

        return response()->json($sample, 201);
    }

    public function show($id)
    {
        $sample = Sample::findOrFail($id);

        return response()->json($sample);
    }

    public function update(Request $request, $id)
    {
        $sample = Sample::findOrFail($id);
        $sample->update($request->all());

        return response()->json($sample);
    }

    public function destroy($id)
    {
        $sample = Sample::findOrFail($id);
        $sample->delete();

        return response()->json(null, 204);
    }
}

Yukarıdaki kod örneğinde, SampleController sınıfı, API endpoint’lerine gelen istekleri karşılar ve ilgili işlemleri gerçekleştirir. Örneğin, index() fonksiyonunda tüm örnekleri döndürürken, store() fonksiyonunda yeni bir örnek oluşturuyoruz. Laravel’in sunduğu response() ve json() fonksiyonlarını kullanarak HTTP yanıtlarını oluşturuyoruz.

API Authentikasyonu

API’lerin güvenliği için Laravel, farklı authentikasyon yöntemleri sunar. Bu yazıda, token tabanlı authentikasyonu ele alacağız.

Öncelikle, sanctum paketini Laravel projemize dahil etmemiz gerekiyor. Bunun için terminalde aşağıdaki komutu çalıştıralım:

composer require laravel/sanctum

Ardından, App\Models\User modelimizi Sanctum’un HasApiTokens trait’ini kullanacak şekilde güncelleyelim:

use Laravel\Sanctum\HasApiTokens;

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

Son olarak, config/auth.php dosyasında guards bölümünde sanctum guard’ını ekleyelim:

'guards' => [
    // ...
    'sanctum' => [
        'driver' => 'sanctum',
        'provider' => 'users',
    ],
],

Bu ayarlamaları yaptıktan sonra, authentikasyon için kullanıcıya token vermek için routes/api.php dosyasında aşağıdaki rotaları ekleyebiliriz:

use App\Http\Controllers\API\AuthController;

Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);
Route::middleware('auth:sanctum')->post('/logout', [AuthController::class, 'logout']);

Yukarıdaki örnekte, register() fonksiyonu kullanıcı kaydını, login() fonksiyonu kullanıcı oturumunu başlatmayı ve logout() fonksiyonu ise kullanıcı oturumunu sonlandırmayı gerçekleştirir.

namespace App\Http\Controllers\API;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\ValidationException;

class AuthController extends Controller
{
    public function register(Request $request)
    {
        $request->validate([
            'name' => 'required|string',
            'email' => 'required|string|email|unique:users',
            'password' => 'required|string|confirmed',
        ]);

        $user = User::create([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password),
        ]);

        $token = $user->createToken('api_token')->plainTextToken;

        return response()->json(['token' => $token], 201);
    }

    public function login(Request $request)
    {
        $request->validate([
            'email' => 'required|string|email',
            'password' => 'required|string',
        ]);

        if (!Auth::attempt($request->only('email', 'password'))) {
            throw ValidationException::withMessages([
                'email' => __('auth.failed'),
            ]);
        }

        $token = auth()->user()->createToken('api_token')->plainTextToken;

        return response()->json(['token' => $token], 200);
    }

    public function logout(Request $request)
    {
        $request->user()->currentAccessToken()->delete();

        return response()->json(null, 204);
    }
}

Yukarıdaki kod örneğinde, register() fonksiyonunda yeni bir kullanıcı oluşturulurken, login() fonksiyonunda kullanıcının oturumu başlatılır ve logout() fonksiyonunda kullanıcının oturumu sonlandırılır. Kullanıcı kaydı ve oturum

işlemleri başarılı olduğunda, token oluşturulup yanıt olarak döndürülür.

Özet

Bu blog yazısında, Laravel kullanarak API geliştirme ve authentikasyonunu nasıl gerçekleştireceğimizi öğrendik. API rotalarını tanımlamak, ilgili kontrollerleri oluşturmak ve API authentikasyonunu yapılandırmak için adımları takip ettik. Laravel’in sağladığı güçlü özellikler sayesinde, hızlı ve güvenli bir şekilde API’ler oluşturabilirsiniz.

Bu yazı, Laravel’de API geliştirme ve authentikasyonuna giriş niteliği taşımaktadır. Daha karmaşık senaryolar ve detaylı özelleştirmeler için Laravel’in resmi dokümantasyonunu incelemenizi öneririz.

🌟 Laravel ile API geliştirmek, işinizi geniş bir kullanıcı kitlesine ulaştırmak ve güvenli bir şekilde veri alışverişi yapmak için harika bir seçimdir. Başarılar dilerim! 🚀

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu
Bu internet sitesinde size en iyi deneyimi sunmak için çerezleri kullanıyoruz. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz.
Kabul Et
Reddet
Privacy Policy