Crie uma REST API com Cloudflare Workers e MongoDB Atlas
Luke Edwards, Maxime Beugnet7 min read • Published Nov 15, 2021 • Updated Mar 29, 2024
APLICATIVO COMPLETO
Avalie esse Tutorial
O Cloudflare Workers fornece um ambiente de execução sem servidor que permite criar aplicativos totalmente novos ou ampliar os existentes sem configurar ou manter a infraestrutura.
MongoDB Atlas permite criar, gerenciar e monitorar clusters do MongoDB no provedor de nuvem de sua escolha (AWS, GCP ou Azure) enquanto o Web SDK pode fornecer uma camada de autenticação e definir regras de acesso às coleções.
Nesta publicação no blog, combinaremos todas essas tecnologias e criaremos uma REST API com um worker da Cloudflare usando um MongoDB Atlas cluster para armazenar os dados.
Observação: neste tutorial, o worker não está usando nenhuma forma de cache. Embora a conexão entre o MongoDB e o aplicativo sem servidor do Atlas seja estabelecida e tratada automaticamente no backend do Atlas App Services, cada nova query enviada ao worker exige que o usuário passe pelo processo de autenticação e autorização antes de executar qualquer query. Neste tutorial, usamos chaves de API para lidar com esse processo, mas o Atlas App Services oferece muitos provedores de autenticação.
O worker está neste repositório GitHub. O README explica tudo, se você souber o que está fazendo. Caso contrário, sugerimos que você siga esta publicação no blog passo a passo. ;-)
- SEM cartão de crédito! Você pode executar todo esse tutorial gratuitamente!
- Conta Cloudflare (plano gratuito é suficiente) com um subdomínio
*.workers.dev
para os trabalhadores. Siga as etapas 1 a 3 desta documentação para obter tudo o que você precisa.
Criaremos o aplicativo Atlas App Services (antes chamado de aplicativo MongoDB Realm) juntos na próxima seção. Isso fornecerá o AppID e a chave API de que precisamos.
Para implantar nosso worker da Cloudflare, precisamos:
- O login/senha da conta da Cloudflare.
- O ID da conta da CloudFlare (na aba Workers > Visão geral).
Para testar (ou interagir com) a REST API, precisamos:
- A chave API de autenticação (mais sobre isso abaixo, mas está na aba Autenticação > Chaves de API).
- O subdomínio
*.workers.dev
da Cloudflare (na aba Trabalhadores > Visão geral).
Ele foi criado durante essa etapa de sua configuração:
Para começar, vá para a página principal do MongoDB Atlas, onde você pode ver seu cluster e acessar a guia “App Services” na parte superior.
Crie um aplicativo vazio (sem modelo) o mais próximo possível do MongoDB Atlas cluster para evitar latência entre o cluster e o aplicativo. Meu aplicativo é "local" na Irlanda (eu-west-1) no meu caso.
Agora que nosso aplicativo foi criado, precisamos configurar duas coisas: autenticação por meio de API e regras da coleção. Antes disso, observe que você pode recuperar o ID do aplicativo no canto superior esquerdo do novo aplicativo.
Vá para Autenticação > Chaves de API.
Ative o provedor e salve o rascunho.
Precisamos criar uma chave de API, mas só podemos fazer isso se o provedor já estiver implantado. Clique em revisar e implantar.
Agora você pode criar uma chave de API e salvá-la em algum lugar! Ele será exibido apenas uma vez. Se você perdê-lo, descarte este e crie um novo.
Temos apenas um usuário em nosso aplicativo, pois criamos apenas uma única chave de API. Observe que este tutorial funcionaria com qualquer outro método de autenticação se você atualizasse o código de autenticação adequadamente no trabalhador.
Por padrão, seu aplicativo não pode acessar nenhuma coleção do MongoDB Atlas cluster. Para definir como os usuários podem interagir com os dados, você deve definir funções e permissões.
Em nosso caso, queremos criar uma REST API básica na qual cada usuário possa ler e gravar seus próprios dados em uma única coleção
todos
no banco de dadoscloudflare
.Vá para a aba Regras e vamos criar essa nova coleção
cloudflare.todos
.Primeiro, clique em "criar uma coleção".
Em seguida, nomeie seu banco de dados
cloudflare
e a coleção todos
. Clique em Criar!Cada documento nesta coleção pertencerá a um usuário único definido pelo campo
owner_id
. Este campo conterá o ID do usuário que você pode ver na aba App Users
.Para limitar os usuários a apenas ler e gravar seus próprios dados, clique em sua nova coleção
todos
na IU de Regras. Adicione a regra readOwnWriteOwn
no Other presets
.Depois de adicionar esta função predefinida, você pode verificar novamente a regra clicando em
Advanced view
. Deve conter o seguinte:Agora você pode clicar mais uma vez em
Review Draft and Deploy
. Nosso aplicativo agora está pronto para uso.Agora que temos o modelo do worker, só precisamos alterar a configuração para implantá-lo em sua conta da Cloudflare.
Edite o arquivo
wrangler.toml
:- Substitua
CLOUDFLARE_ACCOUNT_ID
pelo ID real da sua conta Cloudflare. - Substitua
MONGODB_ATLAS_APPID
pelo seu ID real do aplicativo MongoDB Atlas App Services.
Acesse sua conta da Cloudflare. Agora você deve ver seu novo worker na aba Workers > Visão geral.
Antes de testarmos a API, dedique um momento para ler o código da REST API que acabamos de implantar, que está no arquivo
src/index.ts
:Agora que você está um pouco mais familiarizado com essa REST API, vamos testá-la!
Observe que decidimos passar os valores como parâmetros e a chave de API de autorização como um cabeçalho como este:
Você pode usar o Postman ou qualquer outro para testar sua REST API, mas para facilitar, criei um script bash na pasta
api_tests
.Para que funcionem, precisamos editar o arquivo
api_tests/variables.sh
e fornecer a eles:- URL do worker da Cloudflare: substitua
YOUR_SUBDOMAIN
, para que o URL final do worker corresponda ao seu. - A chave da API do MongoDB Atlas App Service: substitua
YOUR_ATLAS_APP_AUTH_API_KEY
por sua chave de API de autenticação.
Por fim, podemos executar todos os scripts assim, por exemplo:
Como você pode ver, a REST API funciona perfeitamente!
A Cloudflare oferece um produto Workers KV que pode facilitar uma combinação rápida com o Workers, mas ainda é um armazenamento simples de dados chave-valor e a maioria dos aplicativos vai superá-lo. Por outro lado, o MongoDB é um banco de dados poderoso e completo que desbloqueia a capacidade de armazenar, realizar query e indexar seus dados sem comprometer a segurança ou a escalabilidade do seu aplicativo.
Como demonstrado nesta publicação, é possível tirar o máximo proveito de ambas as tecnologias. Como resultado, construímos uma REST API poderosa e segura que será muito bem dimensionada.
Outra opção para se conectar à Cloudflare é a MongoDB Atlas Data API. A Atlas Data API oferece uma maneira leve de se conectar ao MongoDB Atlas que pode ser considerada semelhante a uma REST API. Para saber mais, veja este tutorial do meu colega consultor de desenvolvedores, Mark Smith!
Em caso de dúvidas, acesse nosso website da comunidade de desenvolvedores, no qual os engenheiros e a comunidade do MongoDB ajudam a criar sua próxima grande ideia com o MongoDB. Se sua pergunta for sobre a Cloudflare, recomendamos que você participe da comunidade ativa do Discord.
Relacionado
Tutorial
Previsão de pontuação de filmes com BigQuery, Vertex AI e MongoDB Atlas
Jul 11, 2023 | 11 min read
Tutorial
Aplicativos Web de última geração com Remix e MongoDB Atlas Data API
Aug 01, 2024 | 10 min read