MySQL fornece API Rest para acesso direto

0

Um protótipo do MySQL 5.7 está sendo lançado com um componente opcional chamado o MySQL HTTP Plugin. Esse plugin permite acesso direto ao MySQL via REST sobre HTTP, eliminando a necessidade de um servidor intermediário ou drivers específicos de banco de dados.

SQL sobre HTTP

Na verdade, existem três interfaces disponíveis através deste plugin. A primeira citada na documentação é o endpoint “SQL”. O endpoint aceita e executa declarações SQL passadas através de uma URL. Por exemplo

SQL: SELECT * FROM simple ORDER BY id

URL: http://labs.mysql.com/”>http://127.0.0.1:8080/sql//SELECT+%2A+FROM+simple+ORDER+BY+id

Os resultados voltam na forma de um documento JSON. Na seção “meta” é possível recuperar a informação sobre cada coluna no conjunto de resultados. Então temos uma seção de “data”, que é um array de linhas. Cada linha está na forma de um array de campos. Para reduzir os custos de largura de banda e de análise, estes campos não são nomeados. Ao invés disso, é necessário deduzir o nome dos campos a partir da posição no array.

CRUD sobre HTTP

O endpoint “CRUD” é o que normalmente pensamos como REST. Para todas as operações, é necessário fornecer a chave primária na URL da requisição. Isso significa que não é possível confiar no AUTO_INCREMENT usado em chaves primárias quando inserindo novas linhas.

Com uma requisição PUT, que é usada para insert/update, é necessário fornecer um objeto JSON tradicional como o corpo da mensagem. Da mesma maneira ao usar o GET para ler um registro, recuperamos um objeto JSON tradicional sem nenhum metadado. Na teoria isso reduz o tamanho da mensagem, mas na prática provavelmente caberia em um único pacote TCP de qualquer maneira.

O padrão de URL é:

protocol://host:port/crud/database/table/primaryKey

Documento JSON sobre HTTP

As interfaces SQL e CRUD continuam baseadas em tabelas relacionais. Ou seja, existe um esquema bem definido de linhas e colunas. Se for preciso armazenamento não estruturado, a interface “JSON Document” é ideal.

Essa interface é baseada em simples tabelas chave-valor. Os dados JSON são salvos em uma coluna BLOB, eliminando a necessidade do mapeamento entre os tipos de dados JSON e MySQL. As tabelas, que são gerenciadas pelo MySQL, podem ser criadas enviando uma mensagem PUT para uma URL usando o padrão:

protocol://host:port/doc/database/table

Tabelas de documentos sempre usam um VARCHAR (36) para a coluna de chave. Isto permite o padrão de operações CRUD:

protocol://host:port/doc/database/table/key

Fonte: InfoQ

Compartilhe.