Junior
İstemci ve sunucu arasındaki etkileşim nasıl gerçekleşir?
sobes.tech yapay zeka
AI'dan gelen yanıt
İletişim, genellikle "istemci-sunucu" modeliyle HTTP/HTTPS protokolü üzerinden gerçekleşir:
- İstemci (tarayıcı) bir istek gönderir. İstek şunları içerir:
- Yöntem (GET, POST, PUT, DELETE vb.)
- Talep edilen kaynağın URL'si
- Başlıklar (istemci hakkında bilgiler, veri tipi, yetkilendirme vb.)
- İstek gövdesi (POST gibi yöntemler için, verilerle birlikte)
- Sunucu isteği işler.
- İsteği alır ve çözümler.
- Kaynağı ve işlemi belirler.
- Gerekirse verilere erişir (veritabanı, dosya sistemi vb.).
- Yanıtı oluşturur.
- Sunucu yanıtı gönderir. Yanıt şunları içerir:
- HTTP durum kodu (200 OK, 404 Not Found, 500 Internal Server Error vb.)
- Yanıt başlıkları (içerik tipi, önbellekleme, çerezler vb.)
- Yanıt gövdesi (HTML, JSON, XML, resim vb.)
- İstemci yanıtı alır ve işler.
- Yanıtı çözümler.
- İçeriği gösterir (örneğin, HTML sayfasını render eder).
- JavaScript çalıştırır, verileri işler.
GET isteği örneği:
GET /api/users HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (...)
Accept: application/json
GET isteğine yanıt örneği:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 150
Cache-Control: max-age=3600
[
{ "id": 1, "name": "Alice" },
{ "id": 2, "name": "Bob" }
]
Daha etkileşimli iletişim için diğer mekanizmalar da kullanılır:
- WebSocket: Gerçek zamanlı veri alışverişi için sürekli çift yönlü bağlantı (örneğin, sohbetler).
- Server-Sent Events (SSE): Sunucudan istemciye tek yönlü bağlantı, güncellemeleri akış halinde almak için.
- Polling: İstemci, güncellemeleri kontrol etmek için periyodik olarak sunucuya istek gönderir.
- Long Polling: İstemci, isteği gönderir, sunucu açık tutar ve veri gelene kadar veya zaman aşımına ulaşana kadar bekler, sonra yanıt gönderir.
Web uygulamaları bağlamında, tarayıcı ayrıca başlangıç HTML'sini aldıktan sonra CSS, JS, resimler gibi kaynakları ayrı HTTP istekleriyle yükler. JavaScript, API'ye (AJAX) dinamik olarak ek istekler gönderebilir, böylece sayfa yeniden yüklenmeden veri alıp gönderebilir.