Documentação da API do projeto
Introdução
API (Application Programming Interface) refere-se a um conjunto de funções e comandos padronizados que permitem a comunicação e integração entre diferentes sistemas de maneira facilitada através da programação. Em paráfrase, com APIs, é possível receber e enviar dados entre sistemas sem a necessidade de criar um meio de comunicação entre estes a partir do zero.
Como forma de atender aos interesses da Atvos, empresa parceira do projeto, a equipe SugarZ3ro desenvolveu uma API integrada à aplicação web existente na solução para que seja possível manipular com mais facilidade os dados referentes ao nível de sujeira dos canos de reboilers. Desse modo, a empresa poderá, de maneira prática, obter tais dados e exibí-los em forma de gráficos em sua plataforma interna própria para tal.
A API do projeto foi construída em Python com base no micro-framework Flask. Ela faz parte do backend da aplicação web do sistema e interage com o frontend desta, com o banco de dados e com a inteligência artificial utilizada para analisar os canos dos reboilers.
Documentação das rotas
Cada uma das rotas que compõem a API foi documentada com uso do Postman, software que facilita o processo de criação, testagem e documentação de APIs. A documentação da API pode ser acessada clicando aqui.
Testagem das rotas
Cada uma das rotas que compõem a API também foi testada com uso do Postman. Foram realizados dois tipos de testes: manuais e automáticos.
Testes manuais
Os testes manuais consistiram na criação manual de requisições para cada uma das rotas existentes na API. Cada uma das requisições foi criada e executada junto à execução local do servidor em Flask com uma taxa de 100% de sucesso (nenhuma das requisições falhou).
A seguir, há uma sequência de figuras com capturas de tela da testagem das rotas, mostrando qual rota foi testada, o corpo e parâmetros/argumentos passados para as requisições e o que foi retornado por elas, conforme descrito na documentação das rotas.
Figura 1 - Teste de método [GET] bem sucedido na rota /post_reboiler_id
Fonte:Elaborado pela equipe SugarZ3ro
Figura 2 - Teste de método [POST] bem sucedido na rota /post_reboiler_id
Fonte:Elaborado pela equipe SugarZ3ro
Figura 3 - Teste de método [GET] bem sucedido na rota /pipes
Fonte:Elaborado pela equipe SugarZ3ro
Figura 4 - Teste de método [POST] bem sucedido na rota /pipes
Fonte:Elaborado pela equipe SugarZ3ro
Figura 5 - Teste de método [GET] bem sucedido na rota /pipes/[pipe_id]
Fonte:Elaborado pela equipe SugarZ3ro
Figura 6 - Teste de método [POST] bem sucedido na rota /pipes/[pipe_id]
Fonte:Elaborado pela equipe SugarZ3ro
Figura 7 - Teste de método [DELETE] bem sucedido na rota /pipes/[pipe_id]
Fonte:Elaborado pela equipe SugarZ3ro
Figura 8 - Teste de método [POST] bem sucedido na rota /pipes/simulate
Fonte:Elaborado pela equipe SugarZ3ro
Testes automáticos
Os testes automáticos são testes criados automaticamente por uma funcionalidade de IA existente no Postman. Esses testes são criados com base na funcionalidade esperada de cada rota e levam em conta a testagem de aspectos mais específicos das requisições que são feitas para cada uma delas.
A seguir, há uma sequência de figuras que apresenta diferentes tipos de testes automáticos realizados com o Postman para cada uma das rotas existentes na API do projeto.
Figura 9 - Testes automáticos da rota /post_reboiler_id
Fonte:Elaborado pela equipe SugarZ3ro
Figura 10 - Testes automáticos da rota /pipes
Fonte:Elaborado pela equipe SugarZ3ro
Figura 11 - Testes automáticos da rota /pipes/[pipe_id]
Fonte:Elaborado pela equipe SugarZ3ro
Figura 12 - Testes automáticos da rota /pipes/simulate
Fonte:Elaborado pela equipe SugarZ3ro
Todos os testes automáticos foram bem sucedidos, com exceção dos que consistiram em verificar se as respostas de determinadas requisições iriam retornar o valor da chave datetime
como um objeto datetime, o que não ocorre na prática. A API foi construída de modo a retornar os dados requisitados por meio do formato json
, o que faz com que as datas (incluindo ano, mês, dia, hora, minutos e segundos) de registros de canos sejam salvas como string
e não como um objeto específico do tipo datetime
. Contudo, isso não afeta a funcionalidade da API ou o uso dela para futura criação de gráficos através de uma plataforma interna da empresa parceira.