Değişken içeriğe göre throttling uygulanmasını anlatmak için örnek bir senaryo üzerinden ilerleyeceğiz.

Örnek Senaryo:

  • Kullanıcılar bir API hizmeti ile belirtilen telefon numaralarına SMS atabilmektedir.
  • Aynı kullanıcıdan aynı telefon numarasına bir dakikada en fazla 10 adet SMS atılabilmesi gereklidir.
  • Aynı kullanıcıdan aynı telefon numarasına atılan SMS adeti 10'u geçerse SMS API'den kullanıcıya hata mesajı dönmeli, istek SMS API'sine ulaşmamalı yani kullanıcıya SMS gitmemelidir. 


Çözüm:

Apinizer'da mevcut throttling politikasında kısıtlamanın yapılabileceği hedef değişken tanımına bir adet hedef değişken eklenebilmektedir.

Bu durumda ya kullanıcıya göre ya telefon numarasına göre throttling uygulanabilir. 

Fakat bu senaryoda hem kullanıcı hem telefon numarasına beraber sınırlama getirilmelidir.

Bunun için "Custom Variable" ile bir değişken oluşturup, buna hem kullanıcı hem telefon numarasındaki değeri atayıp, throttling politikasını bu custom variable üzerinden yapacağız.


Senaryonun Uygulanışı:


Öncelikle bir adet Custom Variable oluşturulur. Bu tür değişkenler, sadece kullanıldığı akışta yaşamaktadırlar.


Bu senaryo, request hattında uygulanır. Kullanıcı adı ve telefon numarası değerleri request header alanından alınacaktır.


Senaryoda Business Rule ve Api Based Throttling politikaları kullanılır.


Bussiness Rule politikası ile Custom Variable içine request header alanında gönderilmekte olan kullanıcı adı ve telefon numarası eklenir. 


İki değer içeren Custom Variable, API Based Throttling politikası içerisinde Apply by alanından eklenir. Mesaj sayısı ve süresi belirlenir.


Sonrasında API Proxy deploy edilir.

Senaryo uygulandığında sınırlamaya takılan istekler için kullanıcıya hata mesajı aşağıdaki şekilde dönülür: