COMPUTER ENGINEER

Örneklere git
Blog
Next.js / ASP.NET Core / SQL6 dk çalışma
39/ 41

Yanıtın dönüşü ve yayın

Yanıtın dönüşü: serileştirme, HTML ve hydration

C# nesnesinden JSON’a, JSON’dan HTML’e, HTML’den etkileşimli sayfaya.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Controller bir nesne döndürdüğünde ASP.NET Core onu System.Text.Json ile JSON’a çevirir. Varsayılan adlandırma camelCase’dir; tarihler ISO 8601 biçiminde yazılır ve UTC olarak saklanıp gönderilmesi saat dilimi karışıklıklarını önler. Döngüsel referans içeren entity’leri doğrudan serileştirmek hatalara ve gereksiz veri sızıntısına yol açar; bu yüzden yanıtlar DTO’larla şekillendirilir.

Next.js, JSON’u aldığında Server Component’leri HTML’e çevirir ve tarayıcıya akıtır (streaming). Önce hazır olan kısımlar gönderilir; yavaş bir veri parçası Suspense ile ayrılırsa sayfanın geri kalanı onu beklemez. HTML’in yanında, istemci bileşenlerini canlandırmak için gereken JavaScript ve sunucu bileşenlerinin özet verisi (RSC payload) de gelir.

Tarayıcı HTML’i hemen gösterir; React ardından ‘hydration’ yapar: sunucunun ürettiği HTML ile istemcide oluşturulan ağacı eşleştirip olay dinleyicilerini bağlar. Sunucu ve istemci farklı içerik üretirse (örneğin farklı saat dilimiyle tarih biçimlemek) hydration uyumsuzluğu oluşur. Bu yüzden zamana veya tarayıcıya bağlı değerler dikkatle ele alınır.

NERESİNDE KULLANIRSIN?

Yanıtın son yolculuğu, kullanıcının sayfayı ne zaman gördüğünü ve ne zaman kullanabildiğini belirler.

SIK YAPILAN HATA

Tarihi sunucuda ve istemcide farklı saat dilimleriyle biçimleyip hydration uyumsuzluğu üretmek.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
public sealed record PostDto(string Title, DateTime PublishedAtUtc);
// → {"title":"İlk yazı","publishedAtUtc":"2026-10-01T09:00:00Z"}

Varsayılan camelCase adlandırma ve ISO 8601 UTC tarih.

Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.

02 / SIRA SENDE

Önce kendin dene.

Konsolda ‘Text content does not match server-rendered HTML’ uyarısı çıkıyor ve sorun yalnız gece yarısına yakın saatlerde görülüyor. En olası neden nedir?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
Tarih/saat sunucuda ve istemcide farklı saat dilimiyle biçimleniyor.
Gece yarısına yakın 'bugün/dün' veya gün sayısı iki tarafta farklı çıkıyor.
Çözüm: saat dilimini sabitlemek veya bu değeri yalnız istemcide hesaplamak.

Zamana bağlı değerler, sunucu ve istemcinin aynı sonucu üretmesi garanti edilmedikçe hydration riskidir.