> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/french/function-blocks/blocks-reference/input-output/communication/rest-api-get.md).

# REST API - Get

Ce bloc fonction effectue une requête HTTP GET vers un serveur web et fournit le résultat au reste de votre système. Utilisez-le pour récupérer des données JSON ou du texte brut depuis des endpoints REST et transmettre la réponse à d'autres blocs pour analyse, journalisation ou stockage.

## 📥 Entrées

`Enable Condition` Lorsque `True`, le bloc tentera de récupérer les données depuis l'adresse serveur fournie. Utilisez ceci pour contrôler quand les requêtes sont effectuées.

`Server Address` URL complète du serveur ou de l'API à interroger (par ex. <https://api.example.com/data>).

`Response Data ID` Clé ou chemin optionnel pour extraire une valeur spécifique d'une réponse JSON. Laisser vide pour retourner la réponse complète.

## 📤 Sorties

`Status Code` Code HTTP renvoyé par le serveur.

`Error` Message d'erreur lorsque la requête a échoué ou que le serveur a retourné une erreur.

`Response` Corps de la réponse du serveur. Peut être du texte brut ou une valeur JSON analysée selon l'endpoint et l'entrée `Response Data ID`.

## 🕹️ Contrôles

`Timeout (s)` Temps maximum (en secondes) d'attente de la réponse du serveur avant de considérer la requête comme échouée. Par défaut : 2 secondes.

## 🎯 Fonctions

* Exécution non bloquante : les requêtes sont effectuées sans geler l'interface utilisateur, ainsi les autres blocs et contrôles restent réactifs pendant l'attente de la réponse.
* Extraction de réponse optionnelle : fournissez un `Response Data ID` pour sélectionner un champ unique d'une réponse JSON lorsque vous n'avez besoin que d'une valeur précise.
* Rapports d'erreur : les échecs courants (erreurs de connexion, délais d'attente, codes de statut non-OK) sont exposés via la sortie `Error` et le journal système.
* Timeout ajustable : évite que des attentes longues bloquent votre flux en réglant le contrôle `Timeout (s)`.

## 📝 Instructions d'utilisation

1. Fournissez un signal booléen à `Enable Condition` lorsque vous souhaitez lancer la requête.
2. Saisissez l'URL de l'endpoint dans `Server Address`.
3. Si l'endpoint renvoie du JSON et que vous n'avez besoin que d'une seule valeur, définissez `Response Data ID` sur la clé JSON souhaitée (laisser vide pour recevoir la réponse entière).
4. Ajustez `Timeout (s)` si le serveur est lent ou si vous souhaitez détecter les échecs plus rapidement.
5. Lisez les résultats depuis les sorties `Status Code`, `Error` et `Response` et connectez-les aux blocs suivants pour analyse, sauvegarde ou alertes.

## 📊 Évaluation

Lorsqu'il est activé et qu'une adresse serveur valide est fournie, le bloc émet une requête GET et met à jour ses sorties lorsque la réponse arrive ou lorsqu'une erreur survient. Si aucune réponse n'est disponible, des valeurs par défaut sont fournies afin que les blocs en aval puissent continuer à fonctionner.

## 💡 Astuces et bonnes pratiques

* Pour déclencher une requête unique lorsque une condition devient True, combinez avec le bloc `Rising Edge` pour convertir un signal True soutenu en un unique déclencheur.
* Si vous devez POSTer des données après avoir inspecté une réponse GET, associez ce bloc au bloc `REST API - Post`.
* Utilisez `Parse Data Dictionary` ou `Data to JSON` pour extraire et formater des données structurées depuis la sortie `Response` avant de les sauvegarder ou de les transmettre.
* Pour consigner ou sauvegarder des réponses API répétées, connectez les sorties à `CSV Export` ou `SQL-DB Operations` pour un stockage persistant.
* Utilisez `Debug Input` pour afficher et inspecter les sorties brutes pendant le développement et le dépannage.
* Pour transmettre les données récupérées à des brokers de messages ou systèmes IoT, connectez les résultats à `MQTT Publish`.

## 🛠️ Dépannage

* Problème : Pas de réponse ou timeout.
  * Vérifiez l'URL dans `Server Address` et assurez-vous de l'accès réseau au serveur. Augmentez `Timeout (s)` pour les serveurs lents.
* Problème : La sortie `Error` contient un statut HTTP ou un message.
  * Consultez `Status Code` pour déterminer si le serveur a signalé une erreur client ou serveur (4xx/5xx). Vérifiez l'endpoint et toute authentification requise avec le fournisseur de l'API.
* Problème : La réponse est en JSON mais la valeur requise est introuvable.
  * Vérifiez que la clé ou le chemin fourni dans `Response Data ID` est correct. Si la structure est imbriquée, utilisez un bloc de parsing comme `Parse Data Dictionary` pour naviguer dans le JSON.
* Problème : Les requêtes s'exécutent trop fréquemment ou à des moments indésirables.
  * Contrôlez le timing des requêtes avec `Logic Input`, `Rising Edge` ou d'autres blocs de contrôle de flux pour vous assurer que les requêtes ne sont envoyées que lorsque nécessaire.
