Lorsque vous créez un point de terminaison pour un processus d'entreprise, vous devez spécifier le type de données qui sera envoyé dans cette requête (Request payload type). L'option la plus courante est JSON; elle vous permet de spécifier facilement tous les paramètres nécessaires et de transmettre un modèle de données ou un tableau d'objets. D'autres options sont également possibles, par exemple XML ou Multipart Form (si vous devez envoyer des fichiers).
En même temps, une situation est acceptable lorsque la structure exacte n'est pas connue à l'avance (ou qu'elle n'a tout simplement pas d'importance). Dans ce cas, une option raisonnable consiste à utiliser les requêtes "raw".
Processus de gestion des requêtes " raw
Imaginez une situation où cela pourrait être nécessaire. Disons que le service que nous développons est juste un lien de connexion. Sa tâche consiste à recevoir une demande de l'utilisateur, à vérifier l'autorisation, à enregistrer les journaux, à assurer la protection contre le spam et à rediriger la demande si tout est en ordre.
Une caractéristique importante des requêtes Raw est qu'aucun paramètre d'entrée n'est utilisé lors de la conception des processus métier. Au lieu de cela, un bloc spécial est utilisé pour obtenir le corps de la requête -. Get Request Body. Supposons que vous soyez intéressé par des informations étendues sur la demande. Dans ce cas, le bloc Current Request Info est une option appropriée - il renvoie non seulement le corps de la demande mais aussi des paramètres supplémentaires et des en-têtes de demande.
Dans le cas où nous sommes intéressés par un en-tête spécifique de la requête, il peut être obtenu en utilisant le bloc Get Request Header pour l'obtenir. L'exemple ci-dessus lit l'en-tête X-Real-IP qui contient l'adresse IP de la demande. L'IP résultante est passée à une fonction qui doit vérifier que l'IP donnée est valide et ne figure pas sur la liste noire des adresses interdites. En conséquence, le processus sera soit interrompu avec un message d'erreur approprié, soit, si tout est en ordre, la poursuite de l'exécution sera autorisée.
La demande, reçue à l'adresse Raw, est représentée par un tableau d'octets. Pour la commodité de la perception, elle peut être convertie en une chaîne de caractères (To String bloc) ; sous cette forme, l'information est stockée dans les journaux.
Dans ce cas, la demande elle-même, sans aucune transformation, peut être redirigée plus loin en utilisant le bloc HTTP Request bloc. Dans cet exemple, la méthode de requête, son URL et le corps de la requête (obtenu à partir du bloc Current Request Info ) sont spécifiés. Le résultat du bloc HTTP Request est utilisé comme le résultat de l'ensemble du processus de gestion.
La capture d'écran montre le processus commercial final. Veuillez noter que les blocs fonctionnels (FUNC Save request Log et FUNC IP Blacklist Check) sont des exemples et n'existent que dans le cadre de ce projet.
Ainsi, le point de terminaison peut être utilisé pour travailler avec n'importe quelle demande, quel que soit son contenu réel. Vous n'avez pas besoin de connaître la requête exacte qui doit être envoyée à un service tiers, et même si elle est modifiée (ajout d'un modèle, renommage de paramètres), vous pouvez continuer à utiliser le point de terminaison sans apporter de modifications au projet.