Ao criar um ponto final para um processo empresarial, deve especificar o tipo de dados que serão enviados neste pedido (Request payload type). A opção mais comum é JSON; permite especificar convenientemente todos os parâmetros necessários e passar um modelo de dados ou um conjunto de objectos. Além disso, são possíveis outras opções, por exemplo, XML ou Multipart Form (se precisar de enviar ficheiros).
Ao mesmo tempo, uma situação é aceitável quando a estrutura exacta não é conhecida antecipadamente (ou simplesmente não importa). Neste caso, uma opção razoável é utilizar as consultas "raw".
Processo comercial para pedidos em raw
Imagine uma situação em que isto possa ser necessário. Digamos que o serviço que estamos a desenvolver é apenas um elo de ligação. A sua tarefa é receber um pedido do utilizador, verificar a autorização, guardar registos, executar protecção contra spam, e redireccionar o pedido ainda mais se tudo estiver em ordem.
Uma característica importante das consultas Raw é que não são utilizados parâmetros de entrada na concepção de processos empresariais. Em vez disso, é utilizado um bloco especial para obter o corpo do pedido - Get Request Body. Suponhamos que esteja interessado em informação alargada sobre o pedido. Nesse caso, o Current Request Info bloco é uma opção adequada - devolve não só o corpo de pedido, mas também parâmetros adicionais e cabeçalhos de pedido.
No caso de estarmos interessados num cabeçalho específico do pedido, este pode ser obtido utilizando o Get Request Header bloco. O exemplo acima lê o bloco X-Real-IP que contém o endereço IP do pedido. O IP resultante é passado para uma função que deve verificar se o IP dado é válido e não para a lista negra de endereços proibidos. Como resultado, o processo será abortado com uma mensagem de erro apropriada ou, se tudo estiver em ordem, será permitida a continuação da execução.
O pedido, recebido como Raw, é representado como um conjunto de bytes. Para a conveniência da percepção, pode ser convertido numa cadeia (To String bloco); nesta forma, a informação é armazenada nos registos.
Neste caso, o pedido em si, sem qualquer transformação, pode ser redireccionado para outro local, utilizando o HTTP Request bloco. Neste exemplo, o método de pedido, o seu URL, e o organismo de pedido (obtido a partir do bloco Current Request Info bloco) são especificados. O resultado do bloco HTTP Request bloco é utilizado como resultado de todo o processo comercial.
A imagem do ecrã mostra o processo comercial final. Note-se que os blocos de funções (FUNC Save request Log e FUNC IP Blacklist Check) são exemplos e existem apenas no âmbito deste projecto.
Assim, o ponto final pode ser utilizado para trabalhar com qualquer pedido, independentemente do seu conteúdo real. Não é necessário conhecer o pedido exacto que deve ser enviado a um serviço de terceiros, e mesmo que haja algumas alterações no mesmo (adicionar um modelo, renomear parâmetros), pode continuar a utilizar o ponto final sem fazer alterações ao projecto.