Quando si crea un endpoint per un processo aziendale, è necessario specificare il tipo di dati che verranno inviati in questa richiesta (Request payload type). L'opzione più comune è JSON; consente di specificare comodamente tutti i parametri necessari e di passare un modello di dati o un array di oggetti. Inoltre, sono possibili altre opzioni, ad esempio XML o Multipart Form (se si devono inviare dei file).
Allo stesso tempo, è accettabile una situazione in cui la struttura esatta non è nota in anticipo (o semplicemente non ha importanza). In questo caso, un'opzione ragionevole è quella di utilizzare le query "raw".
Processo aziendale per le richieste raw
Immaginiamo una situazione in cui questo potrebbe essere necessario. Diciamo che il servizio che stiamo sviluppando è solo un link di collegamento. Il suo compito è ricevere una richiesta dall'utente, verificare l'autorizzazione, salvare i log, eseguire la protezione antispam e reindirizzare la richiesta se tutto è in ordine.
Una caratteristica importante delle query di Raw è che nella progettazione dei processi aziendali non vengono utilizzati parametri di input. Al contrario, viene utilizzato un blocco speciale per ottenere il corpo della richiesta Get Request Body. Si supponga di essere interessati a informazioni estese sulla richiesta. In questo caso, il blocco Current Request Info è un'opzione adatta: restituisce non solo il corpo della richiesta, ma anche parametri aggiuntivi e intestazioni della richiesta.
Nel caso in cui si sia interessati a una specifica intestazione della richiesta, questa può essere ottenuta utilizzando il blocco Get Request Header . L'esempio precedente legge l'intestazione X-Real-IP che contiene l'indirizzo IP della richiesta. L'IP risultante viene passato a una funzione che deve verificare che l'IP dato sia valido e non sia presente nella lista nera degli indirizzi vietati. Di conseguenza, il processo verrà interrotto con un messaggio di errore appropriato oppure, se tutto è in ordine, verrà consentita l'ulteriore esecuzione.
La richiesta, ricevuta come Raw, è rappresentata come un array di byte. Per comodità di percezione, può essere convertita in una stringa (To String blocco); in questa forma, l'informazione viene memorizzata nei log.
In questo caso, la richiesta stessa, senza alcuna trasformazione, può essere reindirizzata ulteriormente utilizzando il blocco HTTP Request blocco. In questo esempio, vengono specificati il metodo di richiesta, l'URL e il corpo della richiesta (ottenuto dal blocco). Current Request Info ) sono specificati. Il risultato del blocco HTTP Request viene utilizzato come risultato dell'intero processo aziendale.
La schermata mostra il processo aziendale finale. Si noti che i blocchi funzione (FUNC Save request Log e FUNC IP Blacklist Check) sono esempi ed esistono solo nell'ambito di questo progetto.
Pertanto, l'endpoint può essere utilizzato per lavorare con qualsiasi richiesta, indipendentemente dal suo contenuto effettivo. Non è necessario conoscere l'esatta richiesta che deve essere inviata a un servizio di terze parti e anche se ci sono delle modifiche (aggiunta di un modello, rinominazione di parametri), si può continuare a usare l'endpoint senza apportare modifiche al progetto.