Páginas filhas
  • WebAPI - Documentação do Swagger e consumo de API's

Documentação do Swagger e consumo de API's


O objetivo deste documento é orientar o usuário quanto à configuração do ambiente para visualizar documentação do Swagger e permitir testes nas APIs existentes.

Vamos exemplificar como configurar o ambiente corretamente para utilização dos serviços e como realizar a segurança e autenticação através das APIs, além de exemplos de códigos utilizando os serviços disponíveis.


Pré-Requisitos: Portal RM instalado e configurado com ServiceAlias desejado (tag do arquivo Web.Config que deve conter o alias da base de dados RM que será comunicada pelo serviço).


Arquivo Web.Config

No diretório "X:\totvs\CorporeRM\FrameHTML", localize o arquivo de configurações "Web.Config". Certifique-se que a tag "owin:AutomaticAppStartup " está com o valor "true":

<add key="owin:AutomaticAppStartup" value="true" />


Para acessar o Swagger, é necessário acessar o link: "http://<servidor>:<portaFrameHTML>/swagger/ui/index"

(Exemplo: http://localhost:8080/swagger/ui/index).


URL Novo Portal

A partir da versão 12.1.28 do RM houve uma alteração na URL do novo portal, para mais detalhes acessar o TDN.

Com isso a URL do Swagger e das APIs do produto e customizações serão alteradas também.


Para verificar a porta, acesse, através do IIS, o Website "FrameHTML", que é gerado automaticamente quando realizada a instalação do Portal RM:



Clique com o botão direito do mouse no Website "FrameHTML" e, em seguida, clique na opção "Editar ligações...". Conforme imagem abaixo, a porta seria a 8080, e o link ficaria da seguinte forma "http://localhost:8080/swagger/ui/index".



Ao tentar acessar o link direto do Swagger, podem ocorrer erros conforme imagens abaixo:



Para ajustá-los, é necessário realizar os seguintes procedimentos:

  • Para o erro da primeira imagem:
    • Dentro do servidor, abra o diretório "X:\totvs\CorporeRM\FrameHTML\bin", localize o arquivo RM.WebAPI.xml e altere o nome para RM.WebAPI.Documentation.xml.
  • Para o erro da segunda imagem:
    • No mesmo diretório, localize também o arquivo RM.Fop.WebApi.dll e apague-o da pasta.



Todos os serviços disponíveis no RM são agrupados e listados nesta ferramenta, que visa auxiliar na manutenção e documentação de APIs REST.


Ao acessar o Swagger, são listados todos os serviços disponíveis, com a descrição do serviço, parâmetros e urls:



As APIs disponibilizadas no Swagger utilizam o Basic Authentication, que é o sistema de autenticação mais comum no protocolo HTTP.
Na tela de parâmetros da Lib DN - pré-requisito para todas as customizações - existe um processo que permite gerar o Token de forma simples.


Para instruções e exemplos de geração, acesse o link Manual Operacional da Customização - LIB DN.


O Token deve ser enviado em todas as requisições no cabeçalho HTTP "Authorization".

Seguem exemplos do consumo de um serviço customizado disponibilizado no Swagger.


Executa consultas SQL's cadastradas no RM e retorna o resultado em JSON.


Tipo: GET

Método: ExecutaConsultaSQL

Parâmetros:

  • codColigada (obrigatório): A coligada da sentença SQL cadastrada no RM.
  • codSentenca (obrigatório): O código da sentença SQL.
  • parameters (opcional): Parâmetros que são utilizados na consulta.

Exemplo: codColigada=0;email="[email protected]"

Obs.: Se a consulta não possuir parâmetros, o campo deve ser enviado sem nenhum valor.

  • codSistema (obrigatório): Código do sistema em que a consulta foi cadastrada. (Para consultar a lista com os códigos dos sistemas, clique aqui.)


Visualização do método no Swagger:


Requisição no Postman


No Postman, devemos adicionar duas informações no cabeçalho (Header) da requisição: o Token (Authorization) e o Content-Type, para informar o tipo de dados utilizados, que, no caso das APIs da customização, é o JSON.


Neste exemplo, executamos uma consulta que retorna os Municípios (Tabela GMUNICIPIO), sendo passado como parâmetro o Estado (CODETD).


Exemplo do retorno no Postman:


Exemplo das requisições em algumas linguagens de programação:


C# (Utilizando a biblioteca RestSharp)

var client = new RestClient("http://localhost:8080/rm/api/TOTVSCustomizacao/ConsultasSQL/ExecutaConsultaSQL?codColigada=2&codSentenca=CST.CONSULTA01&parameters=CODETD=MG&codSistema=A");
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Basic bWVzdHJlOnRvdHZz");
IRestResponse response = client.Execute(request);

PHP

<?php

$request = new HttpRequest();
$request->setUrl('http://localhost:8080/rm/api/TOTVSCustomizacao/ConsultasSQL/ExecutaConsultaSQL');
$request->setMethod(HTTP_METH_GET);

$request->setQueryData(array(
  'codColigada' => '2',
  'codSentenca' => 'CST.CONSULTA01',
  'parameters' => 'CODETD=MG',
  'codSistema' => 'A'
));

$request->setHeaders(array(
  'Content-Type' => 'application/json',
  'Authorization' => 'Basic bWVzdHJlOnRvdHZz'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

NodeJS (Utilizando biblioteca Request)

var request = require("request");

var options = { method: 'GET',
  url: 'http://localhost:8080/rm/api/TOTVSCustomizacao/ConsultasSQL/ExecutaConsultaSQL',
  qs: 
   { codColigada: '2',
     codSentenca: 'CST.CONSULTA01',
     parameters: 'CODETD=MG',
     codSistema: 'A' },
  headers: 
   { 'Content-Type': 'application/json',
     Authorization: 'Basic bWVzdHJlOnRvdHZz' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Lista Códigos dos Sistemas

NomeCódigo do Sistema
RM Custos0
RM ChronusA
RM TestisB
RM SaldusC
RM LiberD
RM Classis - EE
RM FluxusF
RM BisG
RM AgilisH
RM BonumI
RM FactorK
RM BibliosL
RM SolumM
RM OfficinaN
RM Saude/JanusO
RM LaboreP
RM SSOR
RM Classis NetS
RM NucleusT
RM Classis - UU
RM VitaeV
RM PortalW
RM SGIX
RM AcessoY



Ao montar o ambiente do projeto foram encontrados alguns erros ao logar no Novo portal do aluno. Assim que o login era realizado, automaticamente o acesso expirava. Tivemos que recorrer ao documento do tdn que especifica os dados a serem tratados.


Foi verificado também que os arquivos estavam em pasta externa ao diretório comum para as customizações gerando erros.

Importante ressaltar que as customizações devem ficar dentro das pastas C:\RM\Legado\{versão}\FrameHTML\web\app\Cst como abaixo:


Com esse padrão disposto, as referências do projeto devem ser direcionadas para ser as mesmas do ambiente FrameHTML que fica em: C:\RM\Legado\12.1.27\FrameHTML\web\js com isso, as referências serão atualizadas todas as vezes que o ambiente for atualizado.

Ao realizar os testes na Federação do Amazonas, não estava sendo possível realizar a chamada para API de Consulta SQL.


Foi verificado que no IIS que a autenticação básica estava habilitada.

Ao desabilitar funcionou corretamente. Como desabilitar:

Produto: Customizações

Versão: 12.1.17 ou Superiores

Data: