COMPUTER ENGINEER

Örneklere git
Blog
HTTP / HTTPS / TLS6 dk çalışma
55/ 70

Cache ve koşullu istekler

If-Match ile kayıp güncellemeyi önlemek

İki kullanıcının düzenlemesini sessizce ezme.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Client bir kaynağı v7 ETag’iyle okur. Düzenleme gönderirken If-Match: "v7" der. Sunucu kaynak hâlâ o sürümdeyse işlemi atomik uygular; değilse 412 ile önkoşul başarısızlığını bildirir. Başlığı kabul edip update’den önce yarışı açık bırakmak yeterli değildir; kontrol ve yazma aynı tutarlılık sınırında olmalıdır.

If-Match strong comparison kullanır; weak validator ile aynı garanti aranmaz. 428, API önkoşul gönderilmesini şart koşuyorsa eksik başlık için kullanılabilir. 409 daha genel durum çatışmasıdır; her concurrency hatasını gelişigüzel aynı status’a çevirmek açıklığı azaltır.

Client güncel sürümü alıp kullanıcıya diff veya merge seçeneği sunabilir. Otomatik olarak son sürümü indirip eski body’yi tekrar PUT yapmak veri kaybını yalnız ertelemiş olur. Bu mekanizma kaynak-level yetkinin yerini almaz.

NERESİNDE KULLANIRSIN?

Admin blog editöründe iki sekmenin değişikliğini korumak için.

SIK YAPILAN HATA

412 gelince otomatik eski içeriği yeniden yazmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

HTTP / temsili örnek
ETag: "v7"

Okunan temsilin sürümü.

Bu sayfa dış sunuculara istek göndermez. HTTP mesajları temsili, HTTP/1.1 biçiminde okunabilir gösterimlerdir; HTTP/2 ve HTTP/3 wire formatı değildir. example.test ayrılmış öğretim alan adıdır. Komut ve JavaScript örneklerini yalnız kendi test ortamında uygula; gerçek token veya cookie yayımlama.

02 / SIRA SENDE

Önce kendin dene.

If-Match kontrolünü update’den bağımsız yapmak yeterli mi?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
Atomic condition + write

Hayır; arada başka update oluşabilir.