Hasura
Criando uma REST API com Hasura, Docker, PostgreSQL e GraphQL
Neste blog, vamos explorar como criar uma REST API com a ajuda do Hasura, uma plataforma GraphQL de código aberto, juntamente com Docker e PostgreSQL. Vamos abordar a configuração inicial, o uso do Hasura para criar uma API GraphQL e, em seguida, como expor essa API como uma REST API.
O que é Hasura?
O Hasura é uma plataforma de código aberto que simplifica o desenvolvimento de APIs GraphQL. Ele se integra diretamente com um banco de dados PostgreSQL e fornece recursos de autorização, autenticação e lógica de negócios personalizada. O Hasura torna mais fácil criar APIs escaláveis e eficientes em um tempo mínimo.
Configuração Inicial
Passo 1: Instalação do Docker e Docker Compose
Certifique-se de ter o Docker e o Docker Compose instalados em seu sistema. Você pode encontrar instruções de instalação em https://docs.docker.com/get-docker/ .
Passo 2: Configurando o Ambiente
Crie um diretório para o projeto e crie um arquivo docker-compose.yaml
com o seguinte conteúdo:
version: '3'
services:
hasura:
image: hasura/graphql-engine
ports:
- "8080:8080"
environment:
HASURA_GRAPHQL_DATABASE_URL: postgres://user:password@postgres:5432/mydb
HASURA_GRAPHQL_ADMIN_SECRET: myadminsecret
postgres:
image: postgres
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: password
Certifique-se de substituir "user"
, "password"
, "mydb"
, e "myadminsecret"
pelas informações do seu banco de dados.
Passo 3: Inicializando o Ambiente
No diretório do projeto, execute o seguinte comando para iniciar o Hasura e o PostgreSQL:
docker-compose up -d
Isso iniciará o Hasura em http://localhost:8080
.
Usando o Hasura para Criar uma API GraphQL
O Hasura fornece uma interface de administração que permite definir o esquema GraphQL, tabelas e relações. Siga estas etapas para criar um esquema simples:
Passo 1: Acessando a Interface do Hasura
Acesse a interface do Hasura em http://localhost:8080
.
Passo 2: Definindo o Schema
- Clique na guia “Data” na interface do Hasura.
- Clique em “Track All” para adicionar todas as tabelas do banco de dados ao seu schema GraphQL.
Passo 3: Configurando Permissões
- Clique na guia “Permissions”.
- Defina as permissões para tabelas e colunas, controlando quem pode acessar e modificar os dados.
Passo 4: Testando a API GraphQL
Agora que seu schema está configurado, você pode acessar a API GraphQL em http://localhost:8080/v1/graphql
. Experimente criar consultas e mutações para acessar seus dados.
Expondo a API GraphQL como REST API
Para expor a API GraphQL como REST API, você pode usar o postgREST . O postgREST é uma ferramenta que gera automaticamente uma API REST com base em um banco de dados PostgreSQL.
Passo 1: Instalando o postgREST
- Instale o postgREST usando o seguinte comando:
npm install -g postgrest
- Crie um arquivo de configuração
postgrest.conf
com o seguinte conteúdo:
{
"db-uri": "postgres://user:password@postgres:5432/mydb",
"db-schema": "public",
"db-anon-role": "anonymous",
"server-host": "0.0.0.0",
"server-port": 3000,
"jwt-secret": "myjwtsecret"
}
Substitua as informações do banco de dados e o segredo JWT apropriados.
Passo 2: Inicializando o postgREST
Execute o postgREST com o seguinte comando:
postgrest postgrest.conf
Agora, sua API REST estará disponível em http://localhost:3000
.
Conclusão
Neste guia, você aprendeu a criar uma REST API usando o Hasura, Docker, PostgreSQL e GraphQL. O Hasura simplifica o processo de criação de APIs GraphQL, permitindo que você configure rapidamente seu esquema e defina permissões. Além disso, você pode expor essa API GraphQL como uma REST API usando o postgREST. Isso oferece uma maneira eficiente de criar APIs altamente flexíveis e escaláveis em um curto período de tempo. Experimente essas ferramentas em seu próximo projeto e aproveite os benefícios da velocidade de desenvolvimento e da eficiência que elas oferecem.