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

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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.


Expandir
titleConfiguração do ambiente

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":

Bloco de código
languagexml
<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).


Aviso
titleURL 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.



Expandir
titleSwagger - Visualizando a Documentação

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:



Expandir
titleSegurança e Autenticação

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".

Expandir
titleExemplos de consumo das API's

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


Expandir
titleWeb Service Consulta SQL

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)

Bloco de código
languagec#
firstline1
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

Bloco de código
languagephp
firstline1
<?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)

Bloco de código
languagejs
firstline1
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);
});

Âncora
_CodSistema
_CodSistema

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



Expandir
titleErros FIERGS EJA

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.

Expandir
titleErros PORTAL SESI

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:

Expandir
titleErro Segurança

Foi identificado em alguns casos quando realizado a chamada ou realização da requisição da API em ambiente configurado pelo cliente do IIS que o mesmo apresenta a seguinte mensagem de erro <code>"555 - Erro interno do servidor. Erro ao executar o WebMethod: xxxxxxxx. Erro ao conectar no RM. - Erro ao inicializar RMSBroker: The type initializer for 'RM.Lib.Monitoring.Tracklog.RMSTracklog' threw an exception.\nObject reference not set to an instance of an object."},"error":"data error"</code>

Este erro ocorre pela não permissão total (Controle Total) da pasta de instalação do projeto da API para o usuário do IIS, realizado a alteração de permissão o mesmo não apresentará mais esta mensagem. Segue como alterar permissão:

Image Removed

Informações
iconfalse
Informações
iconfalse

Produto: Customizações

Informações
iconfalse

Versão: 12.1.17 ou Superiores

Data: 

Informações
iconfalse
titleAutores

Ana Carolina Eleutério Abras

Pedro Antonio Silva Barroso

Usuário desconhecido (thiago.chagas)