# REST API - Request

Birleştirilmiş REST istek bloğu, web API'lerini çağırmak için kullanılır. Method, header'lar, query parametreleri ve payload'u yapılandırın. Çalışma zamanı için async (bloklamayan) veya sync (yanıtı bekleyen) seçin. İsteğe bağlı olarak, JSON yanıttan nokta/array yolu kullanarak bir değer çıkarabilirsiniz.

## 📥 Girdiler

`Enable` Opsiyonel boolean; isteği çalıştırma tetikleyicisi. False ise blok isteği atlayabilir (varsayılan True).

`Server Address` Çağrılacak URL veya endpoint (zorunlu).

`Headers` Opsiyonel header'lar; dictionary veya JSON string olarak verilebilir.

`Query Params` Opsiyonel sorgu parametreleri; dictionary veya JSON string olarak verilebilir.

`Payload` Opsiyonel istek gövdesi (seçilen body mode'a göre gönderilir).

`Response Path` JSON yanıtından bir değer çıkarmak için kullanılan opsiyonel metin yolu (örnekler: data.items\[0].id veya items\[2]).

(burada soketler girdilerdir)

## 📤 Çıktılar

`OK` HTTP yanıtı başarılı olduğunda True olan boolean.

`Status Code` Sunucunun döndürdüğü HTTP durum kodu.

`Error` Ağ/HTTP problemleri veya ayrıştırma hataları için hata mesajı.

`Response Text` Ham yanıt gövdesi (metin olarak).

`Response JSON` Mevcutsa ayrıştırılmış JSON nesnesi (aksi halde None).

`Response Headers` Yanıt header'larının haritası.

`Elapsed (ms)` İsteğin milisaniye cinsinden süresi.

`Extracted Data` `Response Path` kullanılarak `Response JSON`'dan çözülen değer (bulunamazsa None).

(burada soketler çıktı olarak verilir)

## 🕹️ Kontroller

`Method` HTTP methodunu seçin: GET / POST / PUT / PATCH / DELETE.

`Body Mode` `Payload`'u nasıl göndereceğinizi seçin: json / form / raw.

`Runtime Mode` Çalışma modunu seçin: Async (bloklamayan, son sonucu saklar) veya Sync (yanıtı bekler).

`Timeout (s)` İstekler için zaman aşımı (saniye). Geçersiz değerler güvenli bir varsayına geri döner.

`Verify SSL` TLS sertifika doğrulamasını etkinleştir veya devre dışı bırak (sadece güvenilir test ortamlarında devre dışı bırakın).

## ⚙️ Nasıl çalışır

* `Enable` True olduğunda blok, seçilen `Method` ve `Body Mode` ile birlikte `Server Address`, `Headers`, `Query Params` ve `Payload` kullanarak isteği oluşturur.
* `Sync` modunda blok, HTTP isteği tamamlanana kadar bekler ve aynı değerlendirme döngüsünde güncel sonucu döndürür.
* `Async` modunda blok, isteği bloklamadan gönderir; blok son tamamlanan sonucu saklar ve arka plandaki istek tamamlandığında çıktılarını günceller.
* `Response Path` için verilen JSON çıkarım yolu mevcutsa `Extracted Data` olarak çözülür; boş yol çıkarım yapmaz.
* HTTP veya ağ hatalarında blok bir `Error` mesajı sağlar ve hataları tespit etmeyi kolaylaştırmak için bloğun sonucu geçersiz olarak işaretlenir.

## 📝 Kullanım

1. `Server Address`'i API endpoint'inize ayarlayın.
2. Opsiyonel olarak `Headers` ve `Query Params`'i dictionary veya JSON string olarak sağlayın.
3. İstek gövdesini `Payload`'a koyun ve uygun `Body Mode`'u seçin (yapılandırılmış veriler için json kullanın).
4. `Runtime Mode`'u seçin:
   * Senaryonuzun bloklanmasını önlemek için `Async`'i kullanın (UI/sürekli boru hattı için uygundur).
   * Aynı çalıştırma içinde yanıtın hemen gerekli olduğu durumlarda `Sync` kullanın.
5. (Opsiyonel) Aşağı akış mantığı için JSON yanıtından iç içe bir değer çıkarmak üzere `Response Path` ekleyin.
6. Çağrıyı tetiklemek için `Enable`'ı True yapın veya diğer bloklardan boolean tetik beslemesi verin.

## 💡 İpuçları ve Püf Noktaları

* Daha temiz yapı ve formatlama hatalarını azaltmak için `Payload`'a beslemeden önce `Data to JSON` bloğu ile JSON payload hazırlayın.
* Görsel sözlük ayrıştırması tercih ediyorsanız `Response JSON`'dan sonra `Parse Data Dictionary` kullanarak alanlara güvenli erişim sağlayın.
* API yanıtlarını zaman damgalı kaydetmek için periyodik sonuçları `CSV Export` ile kaydedin.
* Hata ayıklama için `Error` veya `Response Text`'i `Debug Input`'a bağlayarak beklenmeyen çıktıları yazdırın veya inceleyin.
* İsteklerin tam olarak ne zaman gönderileceğini kontrol etmek için `Logic Input` veya `Rising Edge` ile birleştirin (ör. yalnızca her olay için bir kez gönder).

(burada önerilen bloklar sağlanan listeden alınmıştır)

## 🛠️ Sorun Giderme

* Server Address boş veya geçersiz: `Server Address`'in tam bir URL olduğundan emin olun (gerekliyse protokol dahil).
* İstek zaman aşımı: `Timeout (s)` değerini artırın veya sunucuya ağ bağlantısını kontrol edin.
* Test ortamlarında SSL doğrulama hataları: Hedefe güveniyorsanız geçici olarak `Verify SSL`'i devre dışı bırakın.
* Beklenmeyen JSON ayrıştırma hataları: Önce `Response Text`'i kontrol edin; yapılandırılmış veri gönderiyorsanız geçerli JSON kullanın ve `Body Mode`'u `json` olarak ayarlayın.
* Çıkarılan veri yok: Yapıyı `Response JSON`'ı inceleyerek doğrulayın ve `Response Path`'i nokta/index gösterimi kullanarak (örn. items\[0].id) ayarlayın.

## 🔒 Gizlilik ve Güvenlik

`Headers` veya `Payload` içindeki hassas verilerle (API anahtarları, parolalar) dikkatli olun. Yanıtları kaydederken veya dışa aktarırken hassas alanların gizlendiğinden emin olun.

## 🧭 Örnek iş akışları

* Sensör verilerini periyodik olarak bir web servisine gönderin ve başarı/başarısızlık sayılarını `CSV Export` ile kaydedin.
* `Data to JSON` ile oluşturulan yapılandırılmış bir JSON nesnesini POST edin ve sonra `Extracted Data`'yı karar akışına (`Logic Input` / eşikler) besleyin.
* Geliştirme sırasında sunucu hatalarını incelemek için önce `Debug Input` kullanın, ardından üretime geçmeden önce günlüklemeyi etkinleştirin.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/turkish/fonksiyon-bloklari/input-output/communication/rest-api-request.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
