API'nizi güncellerken eski istemcileri mutlu etmek mi istiyorsunuz? Laravel'de backward compatible API sürüm yönetimiyle tanışın! İşte profesyonel çözümler:
// routes/api.php Route::prefix('v1')->group(function () { Route::get('users', [UserControllerV1::class, 'index']); }); Route::prefix('v2')->group(function () { Route::get('users', [UserControllerV2::class, 'index']); });
✔️ Avantaj: Debug kolaylığı
✔️ Kullanım: Kurumsal API'ler için ideal
// Middleware $version = $request->header('X-API-Version', 'v1'); config(['app.api_version' => $version]);
// UserServiceProvider.php $this->app->bind(UserRepository::class, function () { return match(config('app.api_version')) { 'v1' => new UserRepositoryV1(), 'v2' => new UserRepositoryV2(), default => throw new Exception('Unsupported API version') }; });
class UserTransformerV1 { public function transform($user) { return ['full_name' => $user->name]; } } class UserTransformerV2 { public function transform($user) { return [ 'first_name' => explode(' ', $user->name)[0], 'last_name' => explode(' ', $user->name)[1] ?? '' ]; } }
Minimum 6 ay destek: Eski sürümleri hemen kaldırmayın
Deprecation header'ı ekleyin:
return response() ->json($data) ->header('Deprecation', 'true') ->header('Sunset', 'Mon, 31 Dec 2024 23:59:59 GMT');
Dökümantasyonu güncel tutun 📚
İstemcilere geçiş süresi tanıyın ⏰
// ApiVersion middleware public function handle($request, $next) { $version = $this->detectVersion($request); if ($version === 'v1' && $this->isDeprecated('v1')) { return response()->json([ 'message' => 'v1 API is deprecated', 'migration_guide' => 'https://...' ], 410); } return $next($request); }
Laravel'de doğru sürüm yönetimiyle:
API sürüm geçişlerinde hangi stratejiyi kullanıyorsunuz? Yorumlarda paylaşın! 💬
Bir sonraki yazımız: 🚀 [Laravel'de Error Handling: Özel Hata Sayfaları ve Loglama] - Kullanıcı dostu hata yönetimi rehberi!
#Laravel #APIDesign #Versioning #BackendDevelopment #BestPractices 🚀