FACIL FLOW - HTTP REST

Painel de Testes — conexão, autenticação e dados

PAINEL DE TESTES — SERVIDOR API

Valide conexão HTTP, autenticação por token e acesso ao banco.

Endpoints de Teste LOCAL

Socket HTTP PENDENTE

GET /status. Valida porta aberta.
Aguardando comando...

Autenticação PENDENTE

POST /executar. Valida token.
Aguardando comando...

Leitura SQL PENDENTE

Aguardando comando...

GERADOR DE CONFIGURAÇÃO — SERVIDOR API

Exemplo independente: preencha os dados e copie ou baixe o ServidorAPI.ini e o config.js. Esta página não lê nem grava a configuração instalada.

Servidor HTTP e segurança

SQL Server

PostgreSQL

MariaDB

MySQL

HFSQL

Oracle

ServidorAPI.ini

config.js

Os arquivos são atualizados enquanto você digita.

CONTEÚDO PARA IA

Documentação publicada, prompt de início e memória persistente.

1. Content da API

Fonte: WEB\content.md. Manual vivo publicado pela API.

2. Prompt de início de sessão

Fonte: WEB\prompt_inicio_sessao.md. Cole no começo de uma conversa nova.

3. Memória de contexto

Fonte: WEB\memoria_de_contexto.md. Contexto mestre para assumir o projeto.

DOCUMENTAÇÃO TÉCNICA — SERVIDOR API

Configuração, rotas, bancos suportados, segurança e publicação.

Estado atual da API 22/07/2026

Bancos: SQL Server, PostgreSQL, MariaDB, MySQL, Oracle via ODBC e HFSQL Client/Server.

Consultas: modo estruturado por tabela/campos em todos os bancos. SELECT livre somente em SQL Server, PostgreSQL, MariaDB, MySQL e Oracle quando ConsultaLivre=1.

HFSQL: usa porta 4900 e HDeclareExternal para tabelas fora da análise. A tabela de homologação é apenas um exemplo; tabela e campos são enviados dinamicamente.

Testes: HFSQL, SQL Server, PostgreSQL, MariaDB, MySQL e Oracle.

Benchmark: carga de 5.000 requisições com o script 07-Benchmark-ServidorApi.ps1, medindo sucessos, falhas, RPS e latências média, P50, P95 e máxima.

JSON: envie funcao, servidor, banco e, conforme o modo, tabela/campos ou sql. O token vai somente no cabeçalho X-API-Token.

Manual para IA: arquivo instalado em WEB\MANUAL_COMPLETO_SERVIDOR_API_PARA_IA.md e fonte em Manuais e Prompt.

Servidor HTTP REST FACILAPP

Servidor HTTP em WINDEV 28 que recebe chamadas JSON, autentica pelo token e acessa SQL Server, PostgreSQL, MariaDB, Oracle e HFSQL sem depender de IIS, WEBDEV ou Node.js.

PORTA TCP 5000

Início rápido

1
Configurar No monitor, informe servidor SQL, porta, usuário, senha e token.
2
Reiniciar Reinicie a API pelo menu para recarregar o arquivo ServidorAPI.ini.
3
Testar HTTP Confirme primeiro GET /status.
4
Testar token e SQL Execute os testes desta página na ordem apresentada.

Endereços de acesso

OrigemEndereço
Máquina localhttp://127.0.0.1:5000
Rede internahttp://192.168.2.100:5000
Internet testadahttps://api.facilapp.com.br
Tailscale/VPNUse o IP privado fornecido pela VPN.
Atenção: o IP público pode mudar. Para acesso remoto permanente, prefira IP fixo, DNS ou Tailscale.
Desempenho: se o banco está na máquina da API, configure-o em 127.0.0.1. Não use o IP público para a conexão interna.

Rotas disponíveis

MétodoRotaTokenFinalidade
GET/statusNãoConfirma que o socket e a porta estão respondendo.
GET/ ou /diagnostico.htmlNãoAbre esta página de diagnóstico e operação.
GET/config.jsNãoCarrega URL, token e timeout usados pela página.
GET/servidor-api.jsNãoCarrega o helper JavaScript.
POST/executarSimExecuta status, consultar, consulta_livre, inserir, alterar e excluir.

Configuração do INI

O arquivo deve ficar ao lado do executável: Exe\ServidorAPI.ini. Usuário, senha e token permanecem no servidor.

[ServidorHTTP]
Ativo=1
Porta=5000

[Seguranca]
ExigirToken=1
Token=SEU_TOKEN

[SQL]
Servidor=127.0.0.1
Porta=1433
Usuario=SEU_USUARIO
Senha=SUA_SENHA

[PostgreSQL]
Servidor=127.0.0.1
Porta=5432

[MariaDB]
Servidor=127.0.0.1
Porta=3306

[HFSQL]
Servidor=127.0.0.1
Porta=4900
Regra: o INI define a conexão padrão. O JSON pode informar outro servidor ou banco autorizado. Nos exemplos e testes use FACILAPP_API.

Configuração JavaScript

Em config.js, use o mesmo token do INI. Em seguida carregue os arquivos nesta ordem:

window.SERVIDOR_API_CONFIG = {
  baseURL: "https://api.facilapp.com.br",
  token: "MESMO_TOKEN_DO_INI",
  timeoutMs: 15000
};
<script src="config.js"></script>
<script src="servidor-api.js"></script>
Nunca envie o usuário ou a senha SQL pelo JavaScript.

Função status

COMANDO JavaScript

const retorno = await ServidorAPI.executar("status");
console.log(retorno);

RESULTADO Resposta esperada

{
  "ok": true,
  "servico": "online",
  "tipo": "socket"
}

Função consultar

A consulta aceita somente nomes seguros de banco, tabela e campos. O backend limita a leitura a no máximo 500 registros.

COMANDO JavaScript

const retorno = await ServidorAPI.executar("consultar", {
  tipo_banco: "sqlserver",
  servidor: "127.0.0.1",
  banco: "FACILAPP_API",
  tabela: "API_TESTE",
  campos: "ID_API_TESTE,NOME"
});

console.log(retorno);

RESULTADO Exemplo

{
  "ok": true,
  "dados": [
    { "ID_API_TESTE": "1", "NOME": "DANIEL" }
  ]
}

Comandos reais para SQL Server, PostgreSQL, MariaDB e Oracle

Use uma única rota: POST /executar. Informe tipo_banco como sqlserver, postgresql, mariadb ou oracle.

Função externaCampos do JSONUso
consultartipo_banco, servidor, banco, tabela, camposConsulta estruturada.
consulta_livretipo_banco, servidor, banco, sqlExecuta SELECT livre quando ConsultaLivre=1.
inserirtipo_banco, servidor, banco, sqlExecuta INSERT.
alterartipo_banco, servidor, banco, sqlExecuta UPDATE.
excluirtipo_banco, servidor, banco, sqlExecuta DELETE.
await ServidorAPI.executar("inserir", {
  tipo_banco: "mariadb",
  servidor: "127.0.0.1",
  banco: "FACILAPP_API",
  sql: "INSERT INTO API_TESTE (NOME) VALUES ('DANIEL')"
});
HFSQL: use consultar_hfsql, inserir_hfsql, alterar_hfsql e excluir_hfsql. HFSQL não usa consulta_livre.

Regra para browse/update

  • Solicitar CREATE TABLE, SELECT do browse e SELECT por ID.
  • Confirmar chave, autonumeração, obrigatórios e validações.
  • Não enviar ID autonumérico no INSERT.
  • UPDATE/DELETE usam o ID da linha selecionada; nunca ID zero.
  • Após gravar, atualizar o browse uma única vez.
  • Buscar nos dados carregados, sem nova requisição por tecla.

Padrão CSS das telas

Cabeçalho #1673aa, fundo #edf2f5, cards brancos, borda #cad9e3, botões de 36 px e resultado JSON #0b3445.

header { background:#1673aa; color:#fff; }
.card { background:#fff; border:1px solid #cad9e3; }
button { height:36px; border-radius:4px; }
button.primary { background:#1673aa; color:#fff; }
pre.resultado { background:#0b3445; color:#bcecff; }
th:first-child, td:first-child { width:120px; }

Fetch e conversões WINDEV

Estas procedures são referências internas do projeto e não são valores enviados em funcao.

ProcedureUso correto
FetchExecuta SELECT TOP 1 simples e posiciona o arquivo real da análise por FetchManual.
FetchSQLExecuta SELECT em dsTabela/CONN; fechar o Data Source ao terminar.
FetchSQLUpdateContrato legado; o Data Source retornado não confirma linhas alteradas.
FetchManualPosiciona por chave simples/composta; em código novo use HFound(pTabela).
ConverteDataParaInteiroData WINDEV para inteiro Clarion antes de gravar ou filtrar.
ConverteInteiroParaDataInteiro Clarion para data WINDEV depois da leitura.
Datas variam conforme o projeto. Primeiro confirme o tipo real da coluna. Se ela armazenar uma data como inteiro Clarion, use as funções oficiais de conversão. Se for DATE, DATETIME ou TIMESTAMP, use o tipo nativo do banco. Não presuma o formato.

Teste pelo PowerShell

SEM TOKEN Porta e status

Invoke-RestMethod "http://localhost:5000/status"

COM TOKEN Backend

$h = @{ "X-API-Token" = "SEU_TOKEN" }
$b = @{ funcao = "status" } | ConvertTo-Json
Invoke-RestMethod "http://localhost:5000/executar" `
  -Method Post -Headers $h `
  -ContentType "application/json" -Body $b

Diagnóstico por sintoma

  • Conexão recusada: processo parado ou porta sem listener.
  • HTTP funciona e token falha: compare INI e config.js.
  • Token funciona e SQL falha: confira servidor, porta, credenciais, banco e tabela.
  • Funciona local e não na rede: confira firewall e IP interno.
  • Funciona na rede e não na Internet: confira NAT, IP público e CGNAT.
  • Rota não encontrada: use somente as rotas listadas neste manual.

Segurança e operação

  • Não registre token, usuário, senha ou dados pessoais no log.
  • Para acesso privado, prefira Tailscale ou outra VPN.
  • HTTP público não cifra token nem dados; para produção pública use HTTPS por proxy reverso/IIS.
  • Depois de alterar o INI, reinicie a API pelo monitor.
  • Use o painel de testes sempre na ordem: HTTP, autenticação e SQL.
Resultado saudável: os três testes ficam com o estado OK e o cabeçalho mostra SISTEMA OK.