Pular para o conteúdo principal
O vsql_http faz requisições HTTP de dentro de uma consulta. Um trigger pode chamar um webhook, um SELECT pode enriquecer linhas a partir de uma API, e um evento agendado pode enviar um resumo para algum lugar, sem nenhuma camada de aplicação no meio. Ele é construído sobre a libcurl e retorna toda resposta como JSON.

Instalar

O vsql_http.veb já está no diretório lib/veb/ do servidor se você instalou o VillageSQL com o script de instalação, a imagem Docker ou um tarball de release. Instale-o no servidor com uma única instrução:
Confirme que ele está lá:
Para compilá-lo você mesmo, siga as instruções de compilação no repositório.

O que ela adiciona

Toda função de requisição retorna um objeto JSON com quatro campos: status, content_type, headers e content. Uma requisição que não consegue ser concluída, como uma conexão recusada ou um timeout, retorna NULL e gera um aviso com a mensagem de erro do curl:
O argumento method do http_request reconhece GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE e PATCH sem distinguir maiúsculas de minúsculas e os envia em maiúsculas; qualquer outro método é enviado exatamente como foi dado.

Exemplo

Busque uma URL e leia dois campos da resposta:
Monte uma query string com segurança:
No VillageSQL 0.0.6 e anteriores, a resposta carrega o conjunto de caracteres binary. Uma função JSON ou uma coluna JSON a rejeita, então o exemplo acima sem o seu CONVERT falha ali com ERROR 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'. Dentro de JSON_OBJECT() ou JSON_ARRAY() ela é aceita, mas codificada em base64. Mantenha o CONVERT(... USING utf8mb4) nessas versões; ele não é necessário no 0.0.7 e posteriores, e é inofensivo ali.
Uma requisição bloqueia a instrução que a fez, por até 30 segundos por padrão. Somente o http_request pode encurtar isso, por meio do seu argumento de opções, como em '{"timeout": 5}'. Uma chamada por linha transforma uma varredura de tabela em uma série de idas e voltas pela rede, então mantenha essas chamadas longe de conjuntos de resultados grandes.

Veja também