Tworząc punkt końcowy dla procesu biznesowego, należy określić typ danych, które zostaną przesłane w tym żądaniu (Request payload type). Najczęściej spotykaną opcją jest JSON; pozwala ona na wygodne określenie wszystkich niezbędnych parametrów i przekazanie modelu danych lub tablicy obiektów. Ponadto możliwe są inne opcje, na przykład XML lub Multipart Form (jeśli trzeba wysłać pliki).
Jednocześnie dopuszczalna jest sytuacja, gdy dokładna struktura nie jest z góry znana (lub po prostu nie ma znaczenia). W takim przypadku rozsądną opcją jest użycie zapytań "raw".
Proces biznesowy dla zapytań raw
Wyobraźmy sobie sytuację, w której może to być potrzebne. Powiedzmy, że usługa, którą tworzymy jest tylko łącznikiem. Jego zadaniem jest odebranie żądania od użytkownika, sprawdzenie autoryzacji, zapisanie logów, wykonanie ochrony przed spamem i przekierowanie żądania dalej, jeśli wszystko jest w porządku.
Ważną cechą zapytań Raw jest to, że podczas projektowania procesów biznesowych nie używa się parametrów wejściowych. Zamiast tego, do uzyskania ciała żądania używany jest specjalny blok -. Get Request Body. Załóżmy, że jesteś zainteresowany rozszerzonymi informacjami o żądaniu. W takim przypadku Current Request Info jest odpowiednią opcją - zwraca nie tylko ciało żądania, ale także dodatkowe parametry i nagłówki żądania.
W przypadku, gdy interesuje nas konkretny nagłówek z żądania, można go uzyskać za pomocą Get Request Header block. W powyższym przykładzie odczytany został X-Real-IP który zawiera adres IP żądania. Uzyskane IP jest przekazywane do funkcji, która musi sprawdzić, czy podane IP jest poprawne i nie znajduje się na czarnej liście zakazanych adresów. W efekcie proces zostanie albo przerwany z odpowiednim komunikatem o błędzie, albo, jeśli wszystko jest w porządku, dalsze wykonywanie będzie dozwolone.
Żądanie, otrzymane jako Raw, jest reprezentowane jako tablica bajtów. Dla wygody odbioru można je przekonwertować na ciąg znaków (To String block); w takiej postaci informacja jest przechowywana w logach.
W tym przypadku samo żądanie, bez żadnych przekształceń, może być przekierowane dalej za pomocą HTTP Request block. W tym przykładzie określono metodę żądania, jego adres URL oraz ciało żądania (uzyskane z bloku Current Request Info ) są określone. Wynik z HTTP Request jest wykorzystywany jako wynik całego procesu biznesowego.
Zrzut ekranu przedstawia ostateczny proces biznesowy. Należy pamiętać, że bloki funkcyjne (FUNC Save request Log i FUNC IP Blacklist Check) są przykładami i istnieją tylko w zakresie tego projektu.
Tak więc punkt końcowy może być używany do pracy z dowolnym żądaniem, niezależnie od jego rzeczywistej zawartości. Nie musisz znać dokładnego żądania, które powinno zostać wysłane do usługi zewnętrznej, a nawet jeśli zajdą w nim jakieś zmiany (dodanie modelu, zmiana nazwy parametrów), możesz nadal korzystać z endpointu bez wprowadzania zmian w projekcie.