class HTTP Durum Kodları ve API Yönetimi extends Post
@created_at(
"2025-01-14 10:28"
)
@tag(
"http status code"
)
#
## HTTP Durum Kodları
HTTP durum kodları, istemci ile sunucu arasındaki iletişimde kullanılan standart kodlardır. Bu kodlar, bir HTTP isteğinin sonucunu belirtir ve istemciye belirli bir mesaj iletir. İşte en yaygın HTTP durum kodlarının açıklamaları ve kullanımları:
### 1xx: Bilgilendirme
- **100 Continue:** Sunucu, istemciye istek gövdesini göndermeye devam etmesi gerektiğini belirtir.
- **101 Switching Protocols:** Sunucu, istemciden gelen protokol değiştirme talebini kabul eder.
### 2xx: Başarı
- **200 OK:** İstek başarıyla tamamlandı.
- **201 Created:** İstek başarıyla tamamlandı ve yeni bir kaynak oluşturuldu.
- **202 Accepted:** İstek alındı, ancak henüz işlenmedi.
- **204 No Content:** İşlem başarıyla tamamlandı, ancak yanıt gövdesi yok.
### 3xx: Yönlendirme
- **301 Moved Permanently:** Kaynak kalıcı olarak başka bir URL'ye taşındı.
- **302 Found:** Kaynak geçici olarak başka bir URL'ye yönlendirildi.
- **304 Not Modified:** Kaynak değişmedi, istemci mevcut veriyi kullanabilir.
### 4xx: İstemci Hataları
- **400 Bad Request:** İstek hatalı veya eksik veri içeriyor.
- **401 Unauthorized:** Kimlik doğrulama gereklidir.
- **403 Forbidden:** İstemci, kaynağa erişim yetkisine sahip değil.
- **404 Not Found:** İstenen kaynak bulunamadı.
- **405 Method Not Allowed:** Kullanılan HTTP metodu desteklenmiyor.
- **406 Not Acceptable:** Kaynak, istemcinin kabul ettiği içerik türünde değil.
- **409 Conflict:** Mevcut kaynakla çelişen bir istek.
- **422 Unprocessable Entity:** Sunucu, isteği anladı ancak işleyemedi.
- **429 Too Many Requests:** İstemci çok fazla istek gönderdi.
### 5xx: Sunucu Hataları
- **500 Internal Server Error:** Sunucuda beklenmeyen bir hata meydana geldi.
- **502 Bad Gateway:** Sunucu, başka bir sunucudan geçersiz yanıt aldı.
- **503 Service Unavailable:** Sunucu geçici olarak hizmet veremiyor.
- **504 Gateway Timeout:** Sunucu, başka bir sunucudan yanıt alamadı.
## API Nedir?
API (Application Programming Interface), farklı yazılım uygulamalarının birbiriyle iletişim kurmasını sağlayan bir arayüzdür. API'ler genellikle REST, GraphQL veya SOAP standartları kullanılarak tasarlanır.
### RESTful API
REST (Representational State Transfer), HTTP protokolünü temel alır ve şu dört ana HTTP metodunu kullanır:
- **GET:** Veri almak için kullanılır.
- **POST:** Yeni veri oluşturmak için kullanılır.
- **PUT/PATCH:** Mevcut veriyi güncellemek için kullanılır.
- **DELETE:** Veri silmek için kullanılır.
### GraphQL
GraphQL, REST'e alternatif bir API standardıdır. İstemciye ihtiyaç duyduğu veri yapısını sorgulama imkanı sunar.
### SOAP
SOAP (Simple Object Access Protocol), daha eski bir API standardıdır ve XML tabanlı bir protokoldür.
## Laravel'de API Yönetimi
Laravel, güçlü bir API geliştirme çerçevesidir ve aşağıdaki araçları sunar:
### 1. API Rotaları
API rotalarını `routes/api.php` dosyasında tanımlayabilirsiniz. Örnek:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::get('/users', function () {
return User::all();
});
### 2. Kontrolcüler
API mantığını daha düzenli bir şekilde yönetmek için kontrolcüler oluşturabilirsiniz:
php artisan make:controller UserController
Ardından, rotaları kontrolcüye yönlendirin:
Route::get('/users', [UserController::class, 'index']);
### 3. Middleware
Laravel, API'ler için kimlik doğrulama ve diğer işlemleri middleware ile destekler:
- **auth:api:** API token doğrulaması için kullanılır.
- **throttle:** İstekleri sınırlamak için kullanılır. Örnek:
Route::middleware('throttle:60,1')->group(function () {
Route::get('/posts', [PostController::class, 'index']);
});
### 4. API Resource
Laravel, JSON formatında yanıt döndüren API kaynakları sağlar:
php artisan make:resource UserResource
`UserResource` içinde, veriyi yapılandırabilirsiniz:
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
];
}
### 5. Test
API'leri test etmek için Laravel'in test özelliklerini kullanabilirsiniz:
php artisan test
Bir API testi örneği:
public function test_get_users()
{
$response = $this->get('/api/users');
$response->assertStatus(200);
}
### 6. API Rate Limiting
Laravel, `RateLimiter` sınıfıyla istek sınırlarını kolayca yönetir:
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('global', function () {
return Limit::perMinute(100);
});
## Sonuç
HTTP durum kodları, API'lerin doğru yanıtlar döndürmesini sağlarken; Laravel, API geliştirme için güçlü araçlar sunar. Yukarıdaki adımları takip ederek, ölçeklenebilir ve sağlam API'ler geliştirebilirsiniz.