Wanneer u een eindpunt voor een bedrijfsproces aanmaakt, moet u het type gegevens specificeren dat in dit verzoek zal worden verzonden (Request payload type). De meest gebruikelijke optie is JSON; hiermee kunt u gemakkelijk alle noodzakelijke parameters opgeven en een gegevensmodel of een array van objecten doorgeven. Daarnaast zijn andere opties mogelijk, bijvoorbeeld XML of Multipart Form (als u bestanden moet verzenden).
Tegelijkertijd is een situatie aanvaardbaar waarin de exacte structuur niet van tevoren bekend is (of het gewoon niet uitmaakt). In dat geval is het gebruik van "raw" query's een redelijke optie.
Bedrijfsproces voor raw verzoeken
Stelt u zich een situatie voor waarin dit nodig zou kunnen zijn. Laten we zeggen dat de dienst die we ontwikkelen slechts een verbindende schakel is. Zijn taak is een verzoek van de gebruiker te ontvangen, de autorisatie te controleren, logs op te slaan, spambeveiliging uit te voeren, en het verzoek door te sturen als alles in orde is.
Een belangrijk kenmerk van Raw queries is dat er geen invoerparameters worden gebruikt bij het ontwerpen van bedrijfsprocessen. In plaats daarvan wordt een speciaal blok gebruikt om de request body - Get Request Body. Stel dat u geïnteresseerd bent in uitgebreide informatie over het verzoek. In dat geval is het Current Request Info blok een geschikte optie - het geeft niet alleen de request body terug, maar ook aanvullende parameters en request headers.
In het geval dat we geïnteresseerd zijn in een specifieke header van het verzoek, kan deze worden verkregen met behulp van het Get Request Header blok. Het bovenstaande voorbeeld leest de X-Real-IP header, die het IP-adres van het verzoek bevat. Het resulterende IP wordt doorgegeven aan een functie die moet controleren of het gegeven IP geldig is en niet op de zwarte lijst van verboden adressen staat. Als gevolg daarvan wordt het proces ofwel afgebroken met een passende foutmelding, ofwel, als alles in orde is, wordt verdere uitvoering toegestaan.
Het verzoek, ontvangen als Raw, wordt voorgesteld als een array van bytes. Voor het gemak kan het worden omgezet in een string (To String blok); in deze vorm wordt de informatie opgeslagen in de logboeken.
In dit geval kan het verzoek zelf, zonder enige transformatie, verder worden omgeleid met behulp van het HTTP Request blok. In dit voorbeeld worden de verzoekmethode, de URL en de verzoektekst (verkregen uit het Current Request Info blok) gespecificeerd. Het resultaat van het HTTP Request blok wordt gebruikt als het resultaat van het gehele bedrijfsproces.
De schermafbeelding toont het uiteindelijke bedrijfsproces. Merk op dat de functieblokken (FUNC Save request Log en FUNC IP Blacklist Check) voorbeelden zijn en alleen bestaan binnen het bereik van dit project.
Het eindpunt kan dus worden gebruikt om met elk verzoek te werken, ongeacht de feitelijke inhoud ervan. U hoeft het exacte verzoek dat naar een dienst van een derde partij moet worden gestuurd niet te kennen, en zelfs als er enkele wijzigingen in zijn aangebracht (toevoegen van een model, hernoemen van parameters), kunt u het eindpunt blijven gebruiken zonder wijzigingen in het project aan te brengen.