Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

RESTful Architecture, istemci (client) ile sunucu (server) arasındaki iletişimin standart, sade ve ölçeklenebilir kurallarla yapılmasını tanımlayan bir mimari yaklaşımdır.
Modern yazılım dünyasında frontend – backend, mobil – server, microservice – gateway gibi kavramların merkezinde neredeyse her zaman RESTful Architecture vardır.
Ama çoğu zaman REST;
gibi fazla yüzeysel ele alınır.
Bu yazıda REST’i:
adım adım ele alacağız.
REST (Representational State Transfer) bir:
👉 Bir mimari yaklaşımdır (architectural style)
Yani REST şunu söyler:
“Dağıtık sistemlerde, client ile server arasında nasıl bir iletişim düzeni kurmalıyız ki sistem:
- ölçeklenebilir,
- anlaşılır,
- bakımı kolay
olsun?”
Şöyle düşün:
Eğer:
yaparsan → sistem kısa sürede kontrolden çıkar.
REST burada şunu der:
“Client ile server arasında net, sade ve kurallı bir sözleşme yap.”
Bir API’ye “RESTful” diyebilmek için bu prensiplerin büyük çoğunluğunu uyguluyor olman gerekir.
Client:
Server:
👉 Birbirlerinin iç işleyişini bilmezler.
“Frontend değişse bile backend bozulmamalı.
Backend refactor edilse bile frontend çökmemeli.”
Bu = loosely coupled sistem
Server client’ı hatırlamaz.
Her istek:
kendi içinde taşır.
“Ama login olduk, server biliyor.”
❌ Hayır.
Server session tutmaz (REST’te).
GET /orders
Authorization: Bearer eyJhbGciOi...
Server şunu yapar:
REST’te fiiller değil, isimler konuşur.
GET /getUser
POST /createUser
POST /updateUser
GET /users
POST /users
GET /users/42
PUT /users/42
DELETE /users/42
👉 Ne? → URL
👉 Ne yapayım? → HTTP Method
REST’in HTTP ile bu kadar güçlü olmasının sebebi bu.
| Method | Anlamı |
|---|---|
| GET | Oku |
| POST | Yeni oluştur |
| PUT | Tam güncelle |
| PATCH | Kısmi güncelle |
| DELETE | Sil |
PUT /users/42
“42 numaralı user’ın tamamını güncelliyorum”
PATCH /users/42
“42 numaralı user’ın sadece bazı alanlarını değiştiriyorum”
Client, kaynağın kendisiyle değil,
temsil edilen haliyle ilgilenir.
Genelde bu temsil:
{
"id": 42,
"name": "Eray",
"email": "eray@example.com"
}
Client şunu bilir:
Ama veritabanı yapısını bilmez.
REST şunu ister:
“Tüm API’ler aynı mantıkla çalışsın.”
Yani:
{
"error": "ValidationError",
"message": "Email is required"
}
Frontend her endpoint için:
GET /posts
POST /posts
GET /posts/{id}
PUT /posts/{id}
DELETE /posts/{id}
GET /posts/{id}/comments
POST /posts/{id}/comments
“Post’un comment’lerini getir”
URL’den konuşur gibi anlaşılıyor.
Status code’lar client ile server arasındaki dil gibidir.
| Kod | Anlam |
|---|---|
| 200 | Başarılı |
| 201 | Oluşturuldu |
| 400 | Client hatası |
| 401 | Yetkisiz |
| 403 | Yasak |
| 404 | Bulunamadı |
| 500 | Server hatası |
POST /users
→ 201 Created
GET /users/999
→ 404 Not Found
En sık hatalar:
/doSomething tarzı endpoint’ler200 OK dönmekREST:
için çok güçlüdür.
Ama:
varsa:
gibi alternatifler düşünülür.
REST:
REST:
Eğer REST’i doğru uygularsan: