Socket HTTP PENDENTE
Aguardando comando...
Valide conexão HTTP, autenticação por token e acesso ao banco.
Aguardando comando...
Aguardando comando...
Aguardando comando...
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.
Documentação publicada, prompt de início e memória persistente.
Fonte: WEB\content.md. Manual vivo publicado pela API.
Fonte: WEB\prompt_inicio_sessao.md. Cole no começo de uma conversa nova.
Fonte: WEB\memoria_de_contexto.md. Contexto mestre para assumir o projeto.
Configuração, rotas, bancos suportados, segurança e publicação.
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 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.
ServidorAPI.ini.GET /status.| Origem | Endereço |
|---|---|
| Máquina local | http://127.0.0.1:5000 |
| Rede interna | http://192.168.2.100:5000 |
| Internet testada | https://api.facilapp.com.br |
| Tailscale/VPN | Use o IP privado fornecido pela VPN. |
127.0.0.1. Não use o IP público para a conexão interna.| Método | Rota | Token | Finalidade |
|---|---|---|---|
GET | /status | Não | Confirma que o socket e a porta estão respondendo. |
GET | / ou /diagnostico.html | Não | Abre esta página de diagnóstico e operação. |
GET | /config.js | Não | Carrega URL, token e timeout usados pela página. |
GET | /servidor-api.js | Não | Carrega o helper JavaScript. |
POST | /executar | Sim | Executa status, consultar, consulta_livre, inserir, alterar e excluir. |
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
FACILAPP_API.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>
const retorno = await ServidorAPI.executar("status");
console.log(retorno);
{
"ok": true,
"servico": "online",
"tipo": "socket"
}
A consulta aceita somente nomes seguros de banco, tabela e campos. O backend limita a leitura a no máximo 500 registros.
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);
{
"ok": true,
"dados": [
{ "ID_API_TESTE": "1", "NOME": "DANIEL" }
]
}
Use uma única rota: POST /executar. Informe tipo_banco como sqlserver, postgresql, mariadb ou oracle.
| Função externa | Campos do JSON | Uso |
|---|---|---|
consultar | tipo_banco, servidor, banco, tabela, campos | Consulta estruturada. |
consulta_livre | tipo_banco, servidor, banco, sql | Executa SELECT livre quando ConsultaLivre=1. |
inserir | tipo_banco, servidor, banco, sql | Executa INSERT. |
alterar | tipo_banco, servidor, banco, sql | Executa UPDATE. |
excluir | tipo_banco, servidor, banco, sql | Executa DELETE. |
await ServidorAPI.executar("inserir", {
tipo_banco: "mariadb",
servidor: "127.0.0.1",
banco: "FACILAPP_API",
sql: "INSERT INTO API_TESTE (NOME) VALUES ('DANIEL')"
});
consultar_hfsql, inserir_hfsql, alterar_hfsql e excluir_hfsql. HFSQL não usa consulta_livre.CREATE TABLE, SELECT do browse e SELECT por ID.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; }
Estas procedures são referências internas do projeto e não são valores enviados em funcao.
| Procedure | Uso correto |
|---|---|
Fetch | Executa SELECT TOP 1 simples e posiciona o arquivo real da análise por FetchManual. |
FetchSQL | Executa SELECT em dsTabela/CONN; fechar o Data Source ao terminar. |
FetchSQLUpdate | Contrato legado; o Data Source retornado não confirma linhas alteradas. |
FetchManual | Posiciona por chave simples/composta; em código novo use HFound(pTabela). |
ConverteDataParaInteiro | Data WINDEV para inteiro Clarion antes de gravar ou filtrar. |
ConverteInteiroParaData | Inteiro Clarion para data WINDEV depois da leitura. |
DATE, DATETIME ou TIMESTAMP, use o tipo nativo do banco. Não presuma o formato.Invoke-RestMethod "http://localhost:5000/status"
$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
config.js.OK e o cabeçalho mostra SISTEMA OK.