Http Metotlarında Idempotent ve Safe Kavramları

Rest Api‘ler tasarlıyorsak HTTP metotlarının oldukça önemli iki özelliğinin (idempotency and safety) farkında olmamız gerekiyor. Bu özellikler HTTP spesifikasyonlarında karşımıza çıkmasına rağmen yazılımcılar tarafından sıklıkla göz ardı edilmektedir.


Idempotent nedir?

Bir veya daha fazla kez çalıştırıldığında sonucu değiştirmeyen operasyonlardır.


Örneğin, bulunduğum lokasyonu ‘İstanbul’ olarak ayarlamak istediğimde bu işlemi kaç kez tekrarladığımın bir önemi yoktur. Sonuç olarak database üzerinde şehir alanı ‘İstanbul’ olarak set edilmiş olacaktır. Bu noktada isteği idempotent kılabilmek için client’a dönülen cevabı her seferinde aynı tutmaya çalışmak sık yapılan hatalardan biridir. Idempotency’nin client’a dönülen yanıtla hiçbir ilgisi yoktur. Sunucu tarafı için isteğin kaç kez yapılıyor olduğunun ilk istekten sonra önemsiz kılınması Idempotency için yeterlidir.


Safe nedir?

Sunucu tarafında herhangi bir değişiklik yapmayan operasyonlardır.


Örneğin, şu anki şehrimi alabilmek adına database üzerine yapılan istekler veritabanında herhangi bir değişikliğe sebep olmuyor.Bu durumda ilgili isteğin safe olduğundan bahsedebiliriz. (Nullipotence)

HTTP Method’larını Idempotent ve Safe kavramları özelinde inceleyecek olursak böyle bir tablo ile karsılasıyoruz;

HTTP MethodIdempotent?Safe?
OptionsYesYes
GetYesYes
HeadYesYes
PutYesNo
PostNoNo
DeleteYesNo
PatchNoNo

Geliştirdiğimiz Rest Api’lerinde Http standartlarına olan uygunluk oldukça önemlidir.

Örneğin, Get request’i üzerinden veritabanına insert eylemi gerçekleştirirsek başımıza iş açabiliriz, client’ımız ilgili get request’inin safe olduğunu varsaydığı için request’ini hiç çekinmeden tekrarlama özgürlüğündedir.

Özetle, standartlara bağlı kalmak Api’larımızın hataya dayanıklı ve sürdürülebilir olması için olmazsa olmazdır.

Hoşçakalın..

Http Metotlarında Idempotent ve Safe Kavramları” üzerine 4 yorum

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s