> 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-post.md).

# REST API - Post

Ce bloc fonction envoie des requêtes POST JSON à une adresse de serveur HTTP et renvoie la réponse du serveur. Il est conçu pour l'intégration avec des API REST externes tout en gardant l'interface utilisateur réactive.

## 📥 Inputs

`Enable Condition` — Signal logique pour démarrer une requête POST lorsque True.

`Server Address` — Champ texte pour l'endpoint complet du serveur (utilisez l'URL complète commençant par http\:// ou https\://).

`Response Data ID` — Nom de clé optionnel pour extraire un champ spécifique d'une réponse JSON.

`Post Data` — Charge utile générique qui sera envoyée en JSON dans le corps de la requête.

## 📤 Outputs

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

`Error` — Message d'erreur ou raison lorsque la requête échoue.

`Response` — Corps de la réponse du serveur ou la valeur extraite si `Response Data ID` est fourni.

## 🕹️ Controls

`Timeout (s)` — Nombre de secondes avant l’expiration de la requête (ajustez selon la vitesse du serveur).

## 🎨 Features

* Requêtes asynchrones : les opérations POST s'exécutent en arrière-plan pour que l'interface reste réactive.
* Analyse de réponse optionnelle : si vous fournissez un `Response Data ID`, le bloc tentera de retourner ce champ spécifique depuis une réponse JSON.
* Intégration simple : accepte une charge utile générique, vous pouvez envoyer des images, nombres, textes ou données structurées préparées par d'autres blocs.

## ⚙️ Mécanisme d'exécution

Lorsque `Enable Condition` est True et qu’un `Server Address` valide est fourni, le bloc envoie une requête POST avec la charge `Post Data`. La requête utilise le `Timeout (s)` configuré et s'exécute sans bloquer l'interface. Lorsque le serveur répond, le bloc met à jour ses sorties avec `Status Code`, `Error` (le cas échéant) et `Response` (ou le champ sélectionné).

## 📝 Instructions d'utilisation

1. Indiquez l'endpoint cible dans `Server Address` (inclure http\:// ou https\://).
2. Connectez ou préparez la charge utile sur l'entrée `Post Data` (utilisez d'autres blocs pour construire des données structurées si nécessaire).
3. Utilisez un signal logique sur `Enable Condition` pour déclencher l'envoi (par ex. un bascule manuelle ou un bloc conditionnel).
4. Facultatif : définissez `Response Data ID` pour extraire un champ spécifique de la réponse JSON du serveur.
5. Ajustez `Timeout (s)` si le serveur est lent ou pour éviter des attentes trop longues.

## 💡 Tips and Tricks

* Utilisez `Logic Input` ou `Rising Edge` pour contrôler quand la requête est envoyée (déclenchements single-shot ou contrôle manuel).
* Préparez des payloads structurés avec `Data to JSON` avant de les fournir à `Post Data` pour un formatage JSON fiable.
* Utilisez `String Input` pour fournir le `Server Address` ou `Number Input` pour les champs numériques dans la charge.
* Enregistrez ou persistez les réponses avec `CSV Export` ou `Image Logger` (si votre payload/réponse contient des images ou des horodatages).
* Associez avec `REST API - Get` lorsque vous avez besoin d'interactions POST et GET avec le même service (par ex. envoyer des données puis interroger les résultats).
* Incluez `Date-Time` ou `Date-Time List` dans votre payload pour horodater les requêtes.
* Utilisez `Debug Input` pour inspecter la charge de la requête ou la réponse du serveur pendant le développement.

## 🛠️ Troubleshooting

* Pas de réponse / erreur réseau : Vérifiez que `Server Address` est correct, accessible depuis la machine et inclut le protocole (http/https). Contrôlez le pare-feu ou la configuration réseau.
* Authentification requise : Assurez-vous que l'API cible accepte les POST non authentifiés ou ajoutez l’authentification nécessaire en dehors de ce bloc (par ex. via des en-têtes gérés par le serveur).
* JSON invalide ou réponse inattendue : Utilisez `Data to JSON` pour garantir un payload JSON valide, et consultez la documentation de l'API pour les noms de champs attendus. Si vous avez demandé un `Response Data ID` et que le champ est absent, la sortie `Response` peut être vide.
* Timeouts : Augmentez `Timeout (s)` pour des endpoints lents ou vérifiez la charge du serveur. Si les requêtes expirent fréquemment, testez le service séparément pour confirmer sa réactivité.
* Déclenchements répétés : Si vous voulez envoyer un seul POST par événement, utilisez `Rising Edge` pour convertir un signal True continu en un seul déclencheur.

Si vous avez besoin d'exemples montrant comment chaîner ce bloc avec la mise en forme des données, la journalisation ou les contrôles de déclenchement, combinez-le avec des blocs tels que `Data to JSON`, `Logic Input`, `Rising Edge`, `CSV Export` et `REST API - Get` pour des schémas d'intégration courants.
