O Swagger ui é uma interface de documentação e teste dos recursos RESTfull de um sistema, dessa forma, qualquer usuário com acesso poderá obter os endpoints disponibilizados, entender como configurá-los e ver o formato de seus retornos. A ferramenta do Swagger é baseada na especificação do OpenAPI (v. 3.0.3) e sua estrutura pode ser exportada para ser utilizada por outras ferramentas que também suportam o OpenAPI.
O conteúdo apresentado na página do Swagger é gerado automaticamente pelo Cronapp, o usuário necessitará apenas configurar quais recursos ficarão visíveis e definir o nível de restrição para o uso. É possível habilitar os recursos gerados por entidades no Diagrama de dados, Fontes de dados e Blocos de programação (servidor), além disso, é possível definir o nível de segurança (permissionável) para cada verbo HTTP dos recursos.
Figura 1 - Visão geral da página do Swagger
Para habilitar a ferramenta, é necessário acessar o acordeão Swagger/OpenAPI (destaque 1 da figura 2) na aba Configurações do Projeto da janela de Configurações do projeto. Além disso, cada recurso (entidade, fonte de dados ou bloco de programação) necessita ser configurado individualmente, habilitando o recurso nas suas configurações e definindo a restrição de execução de cada verbo HTTP.
Figura 2 - Opções nas configurações do Swagger/OpenAPI
<domínio>/api/metadata/
". Caso essa opção esteja desabilitada, será exibido um erro 403
./auth
e /auth/
refresh
) na tela do Swagger, permitindo testar os recursos privados. As classes criadas no Diagrama de dados podem gerar endpoints OData e são configuráveis a partir do próprio diagrama de dados.
Para habilitar o recurso, acesse a janela de Manipulação da classe e selecione o campo Swagger/Open API (destaque 2 da figura 2.1) ou selecione a classe (destaque 1) e marque a opção Swagger nos campos da Propriedades e Eventos do menu lateral (destaque 3).
É possível definir as Permissões nos verbos HTTP do recurso e também sobre cada atributo da classe:
Figura 2.1 - Habilitar o recurso no Swagger e definir as permissões nas entidades do Diagrama de dados
Após configurar a classe no Diagrama de dados, é necessário gerar novamente a camada de persistência para a classe. |
Os datasources do Cronapp geram endpoints OData e são configuráveis a partir da própria janela da Fonte de dados.
Para habilitar o recurso, acesse a janela de configurações da Fonte de dados e marque a opção Swagger/Open API (destaque 1 da figura 2.2).
É possível definir as Permissões nos verbos HTTP do recurso e também sobre cada campo da Fonte de dados:
Figura 2.2 - Habilitar o recurso no Swagger e definir as permissões da Fonte de dados
Figura 2.3 - Definir as permissões dos Campos e Campos calculados da Fonte de dados
Apesar dos Campos calculados não serem persistidos, caso a Fonte de dados possua esse tipo de atributo, ele será visível na lista de schemas do Swagger. Veja mais detalhes no tópico "Campos calculados" na documentação da Fonte de dados. |
Os blocos de programação (servidor) podem gerar endpoints que retornam qualquer formato. Veja mais detalhes no tópico "Via bloco de programação" da documentação Disponibilizando Web Service REST.
Para habilitar o recurso no Swagger, acesse a janela Propriedades do bloco de programação (destaque 1 da figura 2.4) e marque a opção Expor Swagger (destaque 2).
É possível definir as permissões dos verbos HTTP a partir da propriedade Segurança (destaque 3).
Ao habilitar o Swagger nas Propriedades do bloco de programação, todas as funções contidas no Blockly (classe Java) ficarão visíveis, assim como as configurações de segurança nos verbos HTTP. |
Figura 2.4 - Habilitar o recurso no Swagger e definir as permissões do Bloco de programação
Após habilitar o Swagger nas Configurações do projeto e em cada recurso que deseja expor, execute o projeto e clique no botão de atalho Abrir Navegador (ícone globo) para exibir os links (Figura 2.5),
Figura 2.5 - Acesso a ferramenta do Swagger e a estrutura do OpenAPI
<domínio>/api/metadata/configuration
É possível abrir a página do Swagger a partir do menu Abrir Navegador (ícone globo) > Swagger UI (destaque 1 da Figura 2.5) ou através do endereço "<domínio>/api/metadata/
".
A página irá exibir todos os recursos disponibilizados através das configurações do projeto e nas configurações do próprio recurso. Ficarão visíveis, como documentação, os recursos públicos e privados. Porém, só será possível executar os recursos privados após informar o token de um usuário com permissões compatíveis aos endpoints do recurso privado.
Figura 3 - Principais elementos da página do Swagger
Cada recurso pode conter diversos acordeões com endpoints associados. O acordeão do endpoint possui toda a estrutura necessária para executá-lo em outro sistema, exibindo: endereço, parâmetros, exemplo do corpo da requisição (verbos POST e PUT) e exemplos de resposta.
Por padrão, os recursos baseados em OData no Cronapp (Entidades e Fontes de dados) retornam sempre no formato XML, porém na página do Swagger o retorno dos mesmos recursos serão exibidos sempre em JSON. Ao consumir esses recursos em outros locais, é possível definir o formato desejado informando a queryString " |
Figura 3.1 - Elementos do acordeão do endpoint
<domínio>/api/cronapi/odata/v2/app/Entidade
"/api/cronapi/odata/v2/app/minhaFonteDados('<parametro>')
/api/cronapi/odata/v2/app/minhaFonteDados?parametro=valor
A área de Schemas exibirá acordeões com os modelos dos objetos usados pelos recursos Entidades e Fonte de dados. Além do nome do atributo, serão exibidos também o tipo do atributo e uma descrição, que por padrão, será o próprio nome do atributo.
Atributos do tipo Campos calculados (campos não persistidos) da fonte de dados serão exibidos como um atributo comum do modelo. |
Figura 3.2 - Acordeão dos modelos usados nas Entidades e Fonte de dados
Para executar os endpoints dos recursos privados na página do Swagger, é necessário informar o token de acesso de um usuário que possua um nível de autorização compatível com o endpoint a ser testado.
Ao habilitar a opção Ativar para autenticação nas Configurações do projeto (Figura 2), o recurso Autorização ficará disponível na página do Swagger, ele possui os endpoints:
/auth
", em que permite informar o login e senha de um usuário para obter o seu token de acesso;/auth/refresh
", onde é possível atualizar o token após finalizar o tempo de expiração do próprio token.Para autenticar na página do Swagger, acesse o endpoint "/auth
" do recurso Autorização e clique no botão Testar (destaque 1 da figura 3.3).
É importante destacar que em projetos do tipo Microsserviços, que não possuem interfaces clientes e de autenticação, para autorizar um serviço é preciso fazer a integração com outra aplicação que gerencie a autenticação, a fim de obter o token do usuário e executar a ação que informa o token do usuário. Para mais detalhes, consulte o tutorial Projeto de Microsserviços com autenticação. |
Figura 3.3 - Endpoint de autenticação ainda em modo leitura
Os campos username e password no Corpo da requisição (1 da figura 3.4) ficarão disponíveis para inserir um usuário do sistema, informe um usuário válido e clique no botão Execute (2). No campo Response Body em Respostas, caso o código tenha retornado o valor "200", será exibido o retorno da requisição, selecione e copie apenas o conteúdo do atributo "token
" (3).
Figura 3.4 - Obtendo o token do usuário no retorno da requisição
Clique no botão Autorizar (destaque 1 da figura 3.5) no começo da página do Swagger para abrir o modal Autenticação disponível, informe o token obtido no campo Valor e clique no botão Autorizar do modal. Feche o modal e os recursos privados, cujo usuário informado tenha acesso, estarão disponíveis.
Figura 3.5 - Informando o Token de acesso no modal de Autenticação
Será apresentado código "500" (Não autorizado) ao executar um endpoint privado nas seguintes situações:
Será necessário realizar esse procedimento de autenticação sempre que atualizar a página do Swagger. |
É possível utilizar a página do Swagger para testar todos os endpoint disponíveis, desde que possua autorização para isso.
O acordeão do endpoint poderá mudar o seu formato a depender do modo de acesso, alternando em 3 situações: Leitura, Teste e Retorno.
Figura 3.6 - Endpoint em modo de Teste
Após executar a requisição, a área de Respostas exibirá os campos informando o que foi enviado ao servidor e sua resposta (Figura 3.7).
Figura 3.7 - Campos exibidos após a resposta do servidor