Artigo
· Out. 14 4min de leitura

Desenvolvendo Integrações com o InterSystems IRIS - Aplicação REST

Projeto 3 – Requisição REST

Vamos montar nossa próxima integração utilizando uma aplicação REST. Para tal vamos utilizar um BS que chamará o BP do nosso serviço demo (ver Primeira Integração). Vamos reaproveitar o serviço que então poderá ser chamado via SOAP ou REST. Teremos então dois BS que irão chamar o mesmo BP. A imagem abaixo ilustra essa arquitetura:

O primeiro passo vai ser criar um novo BS que não terá nenhum adaptador. Esse BS será chamado pela nossa aplicação REST que veremos mais a frente:

Class ws.rest.bs.Service Extends Ens.BusinessService
{

Parameter SERVICENAME = "entrada";

Method entrada(pInput As ws.demo.msg.Request) As ws.demo.msg.Response [ WebMethod ]
{
              Set tSC=..SendRequestSync("bpEntrada",pInput,.tResponse)
              Quit tResponse
}

}

 

Note que utilizamos o mesmo Request e Response do serviço que vimos na primeira integração, e chamamos o mesmo BP.


Agora vamos montar nossa aplicação REST e depois publica-la no IRIS:

Class ws.rest.api.Entrada Extends %CSP.REST
{

XData UrlMap
{
<Routes>
        <Route Url="/entrada" Method="GET" Call="Entrada"/>
</Routes>
}

ClassMethod Entrada() As %Status
{
              Set obj=##Class(ws.demo.msg.Request).%New()
    Set obj.string1=%request.Get("string1")
    Set obj.string2=%request.Get("string2")
    Set tSC=##Class(Ens.Director).CreateBusinessService("ws.rest.bs.Service",.tService)
    If tSC
    {
                  Set resp=tService.entrada(obj)
    } Else {
                  Set resp=##Class(ws.demo.msg.Response).%New()
                  Set resp.status=0
                  Set resp.mensagem=$SYSTEM.Status.GetErrorText(tSC)
    }
    Set saida = {}
    Set saida.saida=resp.saida
    Set saida.status=resp.status
    Set saida.mensagem=resp.mensagem
    Set saida.sessionId=resp.sessionId
    Write saida.%ToJSON()
    Quit $$$OK
}

}

 

Veja que usamos a chamada ENS.Director para acessar o BS ws.rest.bs.Service que colocamos na production.

Para maiores informações sobre a criação de aplicações REST veja o documento em https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GREST_csprest e quanto a Ens.Director veja em https://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?...

Agora que temos nossa aplicação REST desenvolvida vamos publica-la. Para isso vá no Portal de Administração no caminho Administração do Sistema->Segurança-Aplicações-Aplicações Web. Vamos criar uma nova aplicação Web de nome /api/entrada conforme a tela a seguir:

Salve a aplicação web que criamos. Note que você precisa apontar para o namespace onde você está montando seu código. No nosso exemplo é o namespace INTEGRA. Atente também para a marcação na caixa Habilitar REST e o preenchimento da caixa Expedir Classe com o nome da nossa classe REST.

Após salvar a aplicação web criada, vamos voltar a nossa production e incluir nela o nosso BS. Para isso clique no botão de incluir novo BS (sinal de mais ao lado do termo Services) e preencha a tela:

 

Pronto. Temos nosso BS configurado na nossa production, apontando para o BP da nossa primeira integração conforme vimos na tela no inicio deste texto que reproduzimos novamente abaixo:

Agora podemos utilizar uma ferramenta de teste para consumir o serviço. No nosso exemplo vamos usar o POSTMAN que foi baixado da internet e pode ser encontrado em https://www.postman.com/downloads/

Crie uma nova requisição REST e preencha conforme a tela a seguir:

O endereço do serviço é http://127.0.0.1/api/service/entrada onde /api/service é o nome da aplicação web que criamos anteriormente, e /entrada é a rota que queremos chamar. Passamos os parâmetros string1 e string2, enviamos a requisição e temos nossa resposta. Veja que recebemos o sessionID 2204, e com ele podemos consultar o que aconteceu:

Assim como na primeira integração podemos colocar o TCPTRACE para monitorar o tráfego da integração e verificar o que foi enviado e recebido em detalhes. Para isso ative o TCPTRACE e faça a configuração do mesmo para escutar na porta 8080 e repassar os dados recebidos para a porta 80 do nosso servidor:

Mude a configuração no POSTMAN para agora chamar o serviço na porta 8080, que é onde o TCPTRACE está esperando as chamadas. Reenvie a requisição e veja o resultado:

Agora, volte ao TCPTRACE e veja o que trafegou:

E temos o trace do integrador paea o sessionID 2208:

Neste artigo usamos o REST para receber uma requisição e reaproveitamos um serviço já desenvolvido para responder nossa requisição.

Assim fechamos nossa terceira  integração. Utilizamos em nosso teste o IRIS 2024.1 que disponível para download na sua versão Community na internet.

Discussão (0)1
Entre ou crie uma conta para continuar