Como construir com sucesso uma API com o Firebase?

O Firebase é uma plataforma de desenvolvimento de aplicativos lançada em 2012 e adquirida pelo Google dois anos depois. No início, o Firebase foi pensado apenas como um banco de dados para aplicativos em tempo real, mas o Google viu seu potencial e decidiu adicionar serviços adicionais a ele.

Atualmente, o Firebase é um sistema BaaS (backend as a service) com 18 serviços para facilitar a criação de aplicativos web e mobile. Entre as empresas que usam os serviços BaaS do Firebase estão Accenture, Alibaba Travels, Stack, Twitch e Instacart, além de mais de 2.300 outras.

Benefícios de usar o Firebase

O primeiro dos serviços que o Firebase ofereceu foi seu banco de dados em tempo real, e continua sendo um de seus maiores atrativos. Os bancos de dados do Firebase Real-time são hospedados na nuvem, armazenando dados no formato JSON e sincronizando em tempo real com todos os clientes conectados a eles. Seja usando o SDK do iOS, o SDK do Android ou o SDK do JavaScript, todos os aplicativos conectados a um banco de dados do Firebase Realtime compartilham uma instância do banco de dados, sempre atualizado com os dados mais recentes.

O Cloud Firestore é outro serviço interessante do Firebase. É um banco de dados de documentos NoSQL projetado para facilitar o armazenamento, sincronização e consulta de dados para aplicativos móveis e da Web em escala global. A criação de hierarquias para armazenar dados relacionados e consultas expressivas para recuperar dados permitem que todo o potencial do Cloud Firestore seja realizado. Por sua vez, as consultas são dimensionadas com base no tamanho dos resultados em vez do tamanho do conjunto de dados. Isso permite que os aplicativos sejam dimensionados desde o início sem esperar até o momento em que as necessidades excedem a capacidade.

Além dos serviços de banco de dados mencionados, o Firebase também oferece serviços de hospedagem, armazenamento de arquivos, funções (estilo AWS Lambda), entre muitas outras coisas.

Criando uma API

As APIs são uma forma de fornecer serviços para uso próprio ou de terceiros. O Firebase permite que você forneça serviços personalizados que, por sua vez, usam os próprios serviços do Firebase sem o incômodo de configurar um back-end para esses serviços. Você pode, por exemplo, oferecer acesso a um banco de dados em tempo real do Firebase para aplicativos de terceiros consultarem informações coletadas por sensores industriais.

A primeira etapa na criação de uma API no Firebase é acessar o Console do Firebase e adicione um projeto clicando em “Adicionar projeto” e dando um nome ao novo projeto. O Google lhe dará a opção de ativar o Google Analytics para seu novo projeto. É recomendável aceitar essa recomendação, pois você obterá benefícios como testes A/B e uma ampla variedade de relatórios estatísticos de sua API.

  O que o “Chip de Segurança” T2 da Apple faz no seu Mac?

Depois de criar seu projeto, você poderá selecionar os serviços do Firebase que sua API usará. Para ilustrar essa tarefa, veremos como usar o serviço de banco de dados Firebase Realtime.

Como configurar um banco de dados em tempo real no Firebase

Na barra de navegação à esquerda, dentro da seção Desenvolver, clique em Realtime Database. Um botão “Criar banco de dados” aparecerá à direita. Clique nele para criar seu primeiro banco de dados no Firebase.

Em seguida, você terá que escolher entre várias opções de localização geográfica para seu novo banco de dados. Selecione aquele que está mais próximo de seus usuários. Esse é um aspecto importante para minimizar a latência de sua API, principalmente em aplicativos em tempo real.

A próxima etapa é configurar as regras básicas de segurança para seu banco de dados. Você pode optar pelo modo bloqueado e atribuir permissões de acesso conforme necessário ou optar pelo modo de teste, que permite todas as leituras e gravações.

Você pode começar com a opção de modo de teste para não complicar as configurações de segurança no início. Você sempre pode criar regras posteriormente para definir a configuração de segurança com maior granularidade.

Assim que você terminar de configurar seu banco de dados, a API correspondente também será ativada na seção APIs e serviços do seu console pessoal no Google Cloud Platform.

Programando a API do Firebase

Neste ponto, você já tem os elementos básicos do seu projeto configurados no console do Firebase. A próxima etapa é escrever seu código de API. Para fazer isso, você precisará inicializar a hospedagem e as funções do Firebase em seu computador local. Você pode instalar o firebase-tools usando o npm:

npm install -g firebase-tools

Em seguida, você pode fazer login no Firebase e inicializar seu projeto com os seguintes comandos:

firebase login firebase init

Será exibida uma tela de boas-vindas na qual o Firebase informa a pasta na qual seu projeto será inicializado e um menu de opções aparecerá.

Nesse menu, selecione Funções e Hospedagem (a opção Hospedagem permitirá que você tenha uma URL personalizada para a API que você desenvolverá). Em seguida, escolha na lista o aplicativo Firebase que você criou anteriormente, após o qual você deve selecionar o idioma a ser usado. Para desenvolver uma API web, você pode optar pelo JavaScript.

  Por que os PCs dos anos 90 tinham fechaduras e o que eles faziam?

Se você for usar dependências de pacotes, instale-as com npm dentro da pasta de funções. Então você pode começar a escrever o código para suas funções. Lembre-se de incluir os pacotes firebase-functions e firebase-admin, juntamente com quaisquer outros pacotes necessários:

import * as functions from 'firebase-functions'; 
import * as admin from 'firebase-admin';

Para usar o banco de dados em tempo real, você deve especificar sua URL ao inicializar o SDK do JavaScript. O URL está localizado na seção Realtime Database do Firebase console. Você pode reconhecê-lo pelo seu formato:

https://<database-name>.<region>.firebasedatabase.app

Você pode usar o seguinte snippet para inicializar seu SDK, substituindo os dados que correspondem ao objeto de configuração do seu projeto:

var config = {
  apiKey: "apiKey",
  authDomain: "projectId.firebaseapp.com",
  databaseURL: "https://databaseName.firebaseio.com",
  storageBucket: "bucket.appspot.com"
};
firebase.initializeApp(config);
var database = firebase.database();

Depois de escrever o código da sua função de API, é hora de implantar. Mas antes disso, você terá que fazer algumas alterações no firebase.json, adicionando as seguintes linhas, modificadas de acordo com a configuração do seu projeto:

"rewrites": [
     {
       "source": "/api/v1/**",
       "function": "webApi"
     }
]

O próximo passo é a implantação. Na primeira vez você deve fazer uma implantação completa, executando o comando:

firebase deploy

Em implantações subsequentes, você poderá implantar apenas as funções, usando o parâmetro –only functions.

Depois de executar o comando deploy, a Firebase CLI exibe o URL dos endpoints HTTP de suas funções no terminal, que você pode usar para invocar suas APIs de um aplicativo da web. A URL contém o ID do projeto e uma região para a função HTTP. Por exemplo, a seguinte URL pode ser usada para chamar uma função de consulta de item passando-a itemid=1 como parâmetro:

https://us-central1-apiproject-8753c.cloudfunctions.net/itemQuery?itemid=1

Para executar a função, abra a URL com os parâmetros correspondentes em um navegador.

Observe que a implantação no ambiente de produção requer uma assinatura do plano Firebase Blaze, que é pago conforme o uso, conforme você pode ler na página de preços do Firebase. É um serviço pós-faturamento, o que significa que você é cobrado pelo uso no final de cada mês.

Se você não tiver uma assinatura do Blaze, o comando deploy não exibirá a URL da API. Em vez disso, você verá uma mensagem informando que deve assinar o plano Blaze se quiser implantar no ambiente de tempo de execução. Nesse caso, você ainda pode usar o Firebase Local Emulation Suite para criar e testar aplicativos em sua máquina local em vez de implantá-los no ambiente de produção do Firebase. O teste local é útil para evitar custos desnecessários durante o desenvolvimento do aplicativo, pois cada execução de teste pode gerar cobranças em sua conta.

  Como marcar arquivos em um Mac, iPhone ou iPad

Testes e protótipos locais

A ferramenta Local Emulator Suite oferece uma interface de usuário integrada que torna a prototipagem fácil e útil para testar seus aplicativos em sua máquina local.

Com a interface de usuário do Emulator Suite, você pode testar seus designs de banco de dados, seus fluxos de trabalho do Cloud Functions, analisar o desempenho dos serviços de back-end e avaliar mudanças nas regras de segurança, entre outras tarefas. É basicamente um sandbox seguro para testar a funcionalidade da API antes de enviá-la para um ambiente de produção.

Para emular suas funções ou testar seu aplicativo localmente, execute firebase emulators:start. Você deve ter o Java instalado para poder usar o Firestore Emulator. Se você não tiver, você pode instalá-lo a partir de aqui.

Ao invocar o Firestore Emulator, o comando retornará um URL que permitirá abrir a interface do usuário do Emulator Suite em seu navegador. Por padrão, essa URL será localhost:4000, mas pode variar em cada máquina.

Você também receberá um URL completo para sua função HTTP. Este URL será semelhante a:

http://localhost:5001/apiproject-8753c/us-central1/itemQuery

apenas ele terá o nome do seu projeto, o nome da sua função e também poderá ter um número de porta diferente em sua máquina local.

Para testar a função, copie a URL retornada pelo emulador, adicionando os parâmetros necessários (por exemplo, ?itemid=1) e insira-a em uma nova aba do seu navegador. Os resultados da execução da API aparecerão na interface do usuário do Emulator Suite.

Na aba Logs, você verá novos logs indicando que a função itemQuery() foi executada. Se sua função gerar novos dados no banco de dados do Firestore, você os verá na guia Firestore.

Ganhando mais exposição para sua API

Se você deseja que as APIs que desenvolve se tornem populares, o Firebase também pode ajudá-lo com isso. Não apenas porque permite que você crie seu aplicativo mais rapidamente, eliminando muito do trabalho de colocar os serviços de back-end em funcionamento, mas também ajudando você com o posicionamento do seu produto. Como isso é possível? Simplesmente porque os aplicativos associados ao Firebase têm uma classificação melhor nas classificações de pesquisa do que outros aplicativos.

Além disso, leve em consideração a API de indexação de aplicativos do Firebase. Essa ferramenta melhora os rankings de busca de links de aplicativos e ajuda os usuários a encontrar o conteúdo desejado. Ele também coloca o botão Instalar após o botão da página inicial do seu aplicativo para que os usuários interessados ​​estejam a apenas um clique de se tornarem usuários do seu aplicativo.

Concluindo, o Firebase não apenas oferece serviços de back-end que aceleram drasticamente o desenvolvimento de sua API, mas, quando ela está em funcionamento e exposta ao mundo, também ajuda a promovê-la – e a ganhar dinheiro com isso.