> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API Based Quota Uygulanması - Sabit Zaman Aralıkları

Bu senaryoda Apinizer üzerinde oluşturulan Mock API'ye **API Based Quota** politikasının uygulanması test edilecektir.

Quota politikası, belirli bir zaman diliminde yapılabilecek toplam istek sayısını sınırlar. Bu politika, genellikle daha uzun dönemli kullanım kontrolü sağlamak için kullanılır (**örneğin**, **bir gün veya bir ay içinde belirli bir kullanıcıya 1000 istek izni vermek**).

Senaryoda, gelen istekleri 1 günlük zaman diliminde 100 istek ile sınırlayacağız.

Mock api örneği oluşturup politikayı ekleyelim.

<img src="https://mintcdn.com/apinizer/LkpVQ4wpcX8FupXk/images/tutorials/mock-api-olusturma.png?fit=max&auto=format&n=LkpVQ4wpcX8FupXk&q=85&s=68ea06e4f63776cbdeb2696402f43475" width="1000" data-path="images/tutorials/mock-api-olusturma.png" />

Politika olarak **API Based Quota** ekliyoruz.

<img src="https://mintcdn.com/apinizer/eoMNV6dY9Oprmz1f/images/tutorials/api-based-quota-politika-ekleme.png?fit=max&auto=format&n=eoMNV6dY9Oprmz1f&q=85&s=efc0ee8d9188301401f73fc236cfc150" width="1000" data-path="images/tutorials/api-based-quota-politika-ekleme.png" />

Senaryoda, gelen istekleri **Fixed Window** (Sabit Pencere) yöntemiyle **1 gün için 100 istekle** sınırlayalım.

* Eğer periyot 1 olarak ayarlanmışsa ve gün seçilmişse:
* Örneğin, politika saat 12:00:00'de kaydedildiyse, bu politika bulunduğunuz gün içinde saat **00:00:00** ile **23:59:59** arasında geçerli olacaktır.
* Ertesi gün saat **00:00:00'da** yeni bir pencere başlar ve sayaç sıfırlanır.

<img src="https://mintcdn.com/apinizer/AsiSk-hPeQ0V1lqb/images/tutorials/fixed-window-ayarlari.png?fit=max&auto=format&n=AsiSk-hPeQ0V1lqb&q=85&s=e67745ff41c0b392af706248bfb0cde8" width="1000" data-path="images/tutorials/fixed-window-ayarlari.png" />

| Alan                              | Açıklama                                                                                                                                                |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Permitted Message Count           | İzin verilen istek sayısıdır. Bu senaryoda 100 olarak belirledik.                                                                                       |
| Interval Time Amount              | Seçilen zaman birimine göre belirlenen periyottur. Bu senaryoda 1 olarak belirledik.                                                                    |
| Interval Time Unit                | Zaman birimi. Bu senaryoda gün olarak belirledik.                                                                                                       |
| Target-Specific Quota Rules       | Her hedef için özel kota sınırları tanımlanır.                                                                                                          |
| Interval Window Type              | Zaman aralığını uygulamak için kullanılan yöntem. Fixed türünde 1 günlük zaman periyotları.                                                             |
| Cache Connection Timeout (Second) | Politika ile cache arasındaki bağlantı için bağlantı zaman aşımı değerini belirtin.                                                                     |
| Action for Cache Connection Error | Cache ile bağlantı problemi yaşanırsa, hata döndürmesi (Fail seçilir) veya istek kısıtı uygulanmadan devam etmesi (Continue seçilir) durumu belirlenir. |

Test konsolundan örnek istek attığımızda, mevcut günde 00:00:00 ve 23:59:59 zaman aralığında 100. istek sonrasında kısıtlama sınırına ulaşıldığı için, mesaj engellendi.

<img src="https://mintcdn.com/apinizer/U-KT1-UboZ-b9Uet/images/tutorials/test-konsolu-quota-siniri.png?fit=max&auto=format&n=U-KT1-UboZ-b9Uet&q=85&s=2887698b575aba5c90a2e384ce95035a" width="1000" data-path="images/tutorials/test-konsolu-quota-siniri.png" />

## Target-Specific Quota Rules (Hedefe Özel Kota Kuralları)

Bu özellik sayesinde belirli kullanıcılar veya hedefler için özel kota sınırlamaları tanımlayabilirsiniz.

Politika olarak **API Based Quota** ekliyoruz.

<img src="https://mintcdn.com/apinizer/eoMNV6dY9Oprmz1f/images/tutorials/api-based-quota-politika-ekleme.png?fit=max&auto=format&n=eoMNV6dY9Oprmz1f&q=85&s=efc0ee8d9188301401f73fc236cfc150" width="1000" data-path="images/tutorials/api-based-quota-politika-ekleme.png" />

* Target-Specific Quota Rules (Hedefe Özel Kota Kuralları) kullanarak kullanıcı bazlı (header, body veya başka bir alana göre) özel kota sınırları belirlenebilmektedir. Genel politikada gelen istekleri **Fixed Window** (Sabit Pencere) yöntemiyle **1 gün için 100 istekle** sınırlarken, aynı zamanda **user1** kullanıcısı için saatte **maksimum 5** istek limiti tanımlanabilmektedir.
* Fixed Window yönteminde eğer periyot 1 olarak ayarlanmışsa ve gün seçilmişse:
* Örneğin, politika saat 12:00:00'de kaydedildiyse, bu politika bulunduğunuz gün içinde saat **00:00:00** ile **23:59:59** arasında geçerli olacaktır ve bu süre içinde genel kural olarak 100 istek yapılabilir.
* Ertesi gün saat **00:00:00'da** yeni bir pencere başlar ve sayaç sıfırlanır.
* Target-Specific Quota Rules ile tanımladığımız **user1** kullanıcısı için ise saat bazında bir limit belirlenmiştir. Eğer bir saat dilimi **00:00:00**'da başlıyorsa, bu **00:00:00** ile **00:59:59** arasındaki süreyi kapsar ve **user1** kullanıcısı bu zaman aralığında en fazla 5 istek yapabilir. Sonraki saat diliminde (01:00:00) sayaç sıfırlanır.

<img src="https://mintcdn.com/apinizer/U-KT1-UboZ-b9Uet/images/tutorials/target-specific-quota-rules-ayarlari.png?fit=max&auto=format&n=U-KT1-UboZ-b9Uet&q=85&s=d7657c6a6b662f5c9afe16992c90c4d0" width="1000" data-path="images/tutorials/target-specific-quota-rules-ayarlari.png" />

Test konsolundan örnek istek attığımızda, username Header'ından user1 kullanıcısı ile istek attığımızda mevcut saatte **00:00:00** ile **00:59:59** zaman aralığında 5. istek sonrasında kısıtlama sınırına ulaşıldığı için, mesaj engellendi.

<img src="https://mintcdn.com/apinizer/U-KT1-UboZ-b9Uet/images/tutorials/test-konsolu-user1-quota-siniri.png?fit=max&auto=format&n=U-KT1-UboZ-b9Uet&q=85&s=2cb921925bfc12edf49e4ea58c672bf5" width="1000" data-path="images/tutorials/test-konsolu-user1-quota-siniri.png" />
