 (40).png)
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 🚀