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.

Visualizar documentação do Swagger

Síntese

O objetivo deste documento é de orientar o usuário quanto à configuração do ambiente para visualizar documentação do Swagger e permitir testes nas APIs existentes. Através dos tópicos abaixos, será exemplificado como configurar o ambiente corretamente para utilização dos serviços, como é realizada a segurança e autenticação através das APIs além de exemplos de códigos utilizando os serviços disponíveis.


Expandir
titleAjustando o ambiente

Ao tentar acessar o link direto do Swagger, pode ocorrer os dois erros registrados nas imagens abaixo:





Dentro do servidor, abra o diretório "C:\totvs\CorporeRM\FrameHTML\bin", localize o arquivo RM.WebAPI.xml no diretório, e altere o nome para RM.WebAPI.Documentation.xml.


No mesmo diretório, localize também o arquivo RM.Fop.WebApi.dll e apague-o da pasta.


Expandir
titleVisualizando a Documentação

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

Para acessar o Swagger, é necessário acessar o link no seguinte formato "http://<servidor>:<portaFrameHTML>/swagger/ui/index" (Exemplo: http://localhost:8080/swagger/ui/index).


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


Após isso, basta clicar com o botão direito do mouse no Website "FrameHTML" e clicar 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 acessar o Swagger, serã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, que é 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 abaixo:

Manual Operacional da Customização - LIB DN


O Token deverá ser enviado em todas as requisições no cabeçalho HTTP "Authorization". Nos tópicos abaixo serão apresentados exemplos de utilização via POSTMAN e via código em diferentes linguagens.


Expandir
titleExemplos de consumo das APIs

A seguir, serão exibidos exemplos do consumo de um serviço customizado disponibilizado no Swagger. O método em que será feita a chamada é o ExecutaConsultaSQL, que realiza a execução de consultas SQL cadastradas no RM e retorna o resultado em JSON. O método utilizado é GET, e existem 4 parâmetros:

  • codColigada (Código da Coligada da Sentença SQL)
  • codSentenca (Código da Sentença)
  • parameters (Parâmetros que são utilizados na consulta)
  • codSistema (Código do sistema onde a consulta foi cadastrada)


Segue a 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, vamos executar 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);
});



Informações
iconfalse
Informações
iconfalse

Produto: Customizações

Informações
iconfalse

Versão: 12.1.17 ou Superiores

Data:2102 

Informações
iconfalse
titleAutores

Ana Carolina Eleutério Abras

Pedro Antonio Silva Barroso

Usuário desconhecido (thiago.chagas)