Sempre que o usuário faz uma solicitação HTTP para qualquer um desses, o React cria a solicitação com os parâmetros necessários e a envia para o servidor de back-end . No back-end, a FastAPI roteia a solicitação para o método apropriado e invoca o método de banco de dados apropriado para executar a operação. Depois que a consulta é executada com sucesso no nível do banco de dados , a resposta é recebida e processada pelo back-end e enviada para o front-end do React. Em seguida, o React exibe a mensagem de sucesso/f real para o usuário.
Front-end do React
A biblioteca React JS agiliza o desenvolvimento de aplicativos front-end prontos para produção, fornecendo muitos utilitários e componentes comuns prontos para uso que podem ser aproveitados. Como parte da pilha FARM, o React é usado para enviar solicitações HTTP para o back-end e exibir a resposta do back-end para o front-end.
O React JS usa o DOM virtual, que atualiza apenas as partes modificadas do aplicativo e não toda a estrutura da árvore. Isso agiliza o aplicativo. Outro recurso notável é a sintaxe JSync (JavaScript Extension) , por meio da qual você pode adicionar elementos JavaScript dentro de tags SQL. Portanto, qualquer alteração no valor do elemento é refletida imediatamente sem a necessidade de uma atualização ou reinicialização do servidor .
Considere uma simples solicitação HTTP feita por um usuário para atualizar seu número de celular. O React armazena os dados inseridos pelo usuário usando um gatilho simples (useState).
Esses dados serão enviados para a camada de aplicativo usando a solicitação PUT no formato JSON.
Como a pilha FARM suporta programação assíncrona, podemos usar a biblioteca JS axios que é baseada em promises e suporta todos os navegadores. Ao utilizar axios, podemos abstrair a complexidade da criação e configuração de solicitações HTTP.
Embora o React aceitasse muitos formatos de dados, o formato JSON é o mais preferido, pois é leve e usa menos largura de banda.
FastAPI
FastAPI é um framework web assíncrono baseado em Python. Na pilha da FARM, a Fast API atua como o middleware que processa as solicitações HTTP recebidas do aplicativo React e envia a resposta de volta. A FastAPI é executada no servidor uvicorn, que é baseado na especificações do servidor ASGI para servidores web assíncronos.
A API rápida aproveita operações de E/S sem bloqueio para cuidar de várias cargas simultâneas por meio de corrotinas. Por exemplo
Suponha que haja cinco solicitações simultâneas para atualizar um número de celular. Se cada um deles fosse processado um por um, seria um desperdício de CPU e tempo. Usando a palavra-chave assíncrono da biblioteca asyncio do Python, podemos começar a processar as solicitações em paralelo. Digamos que a primeira solicitação está aguardando os resultados da busca (localização do número de celular a ser atualizado). Esse tempo de espera pode ser usado para iniciar a segunda solicitação e assim por diante. Assim, cada solicitação é completamente independente das outras e não há bloco ou espera.
Na corrotina acima, main() é o ponto de entrada do programa, após o qual cada solicitação é processada de forma assíncrona como uma corrotina separada.
O framework web fornecido pela FastAPI fornece:
- Suporte total para programação assíncrona, proporcionando assim alto desempenho.
- Injeção de dependência, ou seja, declarando as dependências do projeto e injetando-as durante o tempo de execução.
- Validação e serialização de dados usando a biblioteca pydantic.
- Programação assíncrona usando a biblioteca asyncio python.
- Documentação de API automática para os pontos de extremidade da API usando Swagger.
- Insinuações de tipo e anotações.
Podemos usar decorativas Python (@app.get, @app.put e assim por diante) para definir as solicitações HTTP e os caminhos de roteamento.
Em seguida, você pode acessar os dados de entrada usando o caminho ou os parâmetros de consulta da solicitação. O uso da biblioteca pydantic cuidará da validação dos dados.
Em seguida, você pode criar a função assíncrona que atualiza o número do celular na coleção do banco de dados MongoDB :
Em um caso do mundo real, você provavelmente deseja atualizar o número de celular com base em algum critério, como customer_id. Nesse caso, você pode adicionar um parâmetro de caminho no ponto de extremidade FastAPI ( URL de roteamento ):
A função assíncrona para atualizar o número de celular tomará o customer_id com o número de celular a ser atualizado como parâmetro:
O "resultado" é um documento BSON, que é automaticamente convertido em um dicionário Python pelo mecanismo do driver assíncrono. Em seguida, a FastAPI converte-a em uma resposta JSON.
Você também pode criar uma resposta personalizada com base no resultado no código FastAPI.
O aplicativo React usa gatilhos para definir o estado de uma variável, de maneira que você possa simplesmente definir a resposta na variável e o React a exibirá na página de front-end:
A FastAPI usa dependências para fornecer suporte integrado para gerenciar permissões e controle de acesso baseado em função — por exemplo, autenticar um usuário ou autorizar acesso a uma rota.
Interface de gateway de servidor assíncrono (ASGI)
A ASGI fornece especificações para criar aplicativos e servidores assíncronos no Python. Isso permite que os aplicativos executem operações de E/S, como consultas de banco de dados ou solicitações de rede, sem bloquear outras operações. A ASGI foi projetada para lidar com conexões de longa duração, além da solicitação e resposta HTTP comuns. Esse recurso os torna úteis para aplicativos em tempo real, onde a comunicação bidirecional entre o cliente e o servidor é necessária.
servidor web Uviquar
Uviquar é um servidor web assíncrono baseado nas especificações ASGI. Ele oferece alto desempenho e é muito adequado para lidar eficientemente com altas cargas de aplicativos. Os desenvolvedores Python que usam a Fast API podem usar o servidor uvicorn para implantar e gerenciar suas aplicações. A Uviquar também oferece suporte a web soquetes. O FastAPI é compatível com alguns outros servidores, como Híbrido e Quart, mas o uvitor é o preferido devido ao desempenho e estabilidade.
Driver assíncrono do Motor
motor é um driver assíncrono para conectar o FastAPI (Python) e o MongoDB. Ele é semelhante ao driver pymongo, mas para aplicativos assíncronos. O motor também funciona bem com a versão comunitária ou empresarial do MongoDB server. Para saber mais sobre motores, acesse a página de documentação.
MongoDB é a camada de dados que armazena e recupera dados conforme necessário pelo aplicativo.
MongoDB é um banco de dados documento que armazena dados em um formato semelhante ao JSON conhecido como BSON (Binary JavaScript Object Notation). Devido ao seu modelo de documento, o MongoDB oferece alta flexibilidade em armazenar dados e acomoda facilmente qualquer mudança de esquema.
Existem vários tipos de bancos de dados MongoDB — o banco de dados corporativo MongoDB, o banco de dados comunitário MongoDB, e o banco de dados em nuvem (Atlas). Com o MongoDB Atlas, você não precisa instalar nada. Basta criar uma conta gratuita e você pode girar um cluster.
O MongoDB oferece opções eficientes de modelagem de dados para otimizar o desempenho e, ao mesmo tempo, manter a consistência e a flexibilidade dos dados preservadas. Por exemplo, para criar modelos de dados para seu aplicativo da pilha FARM, você pode definir a carga de trabalho e identificar os diferentes tipos de relacionamentos entre as entidades principais — um relacionamento 1:1, 1:muitos ou muitos:muitos. Com base nisso, você pode decidir sobre a estrutura do documento . O MongoDB segue uma regra simples de que os dados acessados juntos devem ser armazenar juntos. Você pode optar por incorporar todos os detalhes relevantes de uma entidade em um único documento, ou normalizar os dados e fazer referência a eles usando identificadores (como em um banco de dados relacional ).
MongoDB Atlas é uma plataforma de desenvolvimento de dados em cloud que oferece recursos abrangentes para gerenciar aplicações modernas — por exemplo, alta disponibilidade e tolerância a falhas integradas, backup e restauração automatizados, escalabilidade vertical e horizontal, provisionamento de servidor automatizado, instalação, configuração e correção.
O framework de agregação rico do MongoDB, juntamente com as extensas bibliotecas científicas do Python, são mais adequadas para os casos de uso atuais de AI e aprendizado de máquina, como detecção de fraudes, análise de dados em tempo real, recomendações direcionadas de cliente, analisar o comportamento do usuário e assim por diante. Usando o MongoDB Atlas, você obtém acesso a recursos adicionais, como Atlas Search, MongoDB Charts, App Services, Connector de ferramentas de BI, data federation, processamento de fluxo e muito mais.
Para criar uma conexão do MongoDB a partir do back-end da FastAPI, basta definir o URL e abrir a coleção do banco de dados :
Depois de estabelecer a conexão e obter o banco de dados, você pode usá-los para executar qualquer operação CRUD usando os métodos apropriados — por exemplo, o método update_one() que usamos na seção FastAPI.
Você pode criar um aplicativo completo da pilha FARM usando nosso aplicativo TODO para obter orientação sobre o código de ponta a ponta e a configuração necessários para criar seu aplicativo.
Gerador de aplicativos Full Stack FastAPI para desenvolvedores Python
O MongoDB fornece o Full Stack FastAPI App Generator para desenvolvedores Python. Anteriormente, os desenvolvedores Python precisavam integrar manualmente componentes como autenticação, teste e integração no aplicativo principal. O MongoDB Full Stack FastAPI aplicativo Generator fornece um esqueleto de aplicativo bem estruturado, simplificando assim a configurar inicial do projeto. Algumas das principais características do gerador de aplicativos são:
- Uma pilha completa de aplicativo web com integração de componentes de front-end e back-end.
- Um sistema de autenticação integrado.
- Ferramentas operacionais e de monitoramento.
Pilha FARM versus pilha MERN
Tanto as pilhas FARM quanto MERN usam React e MongoDB , que fornecem alta flexibilidade e desempenho. A diferença está no uso de Node.js versus FastAPI, e a escolha de uma das duas pilhas depende do seu caso de uso comercial ou de preferência pessoal.
- A pilha MERN tem uma curva de aprendizagem mais curta, pois o desenvolvedor só precisa aprender e escrever código JavaScript tanto para o back-end quanto para o front-end, enquanto para a pilha FARM, é preciso aprender também Python. Além disso, a pilha MERN oferece uma experiência unificada e melhor legibilidade e manutenção de código.
- O Node.js tem mais suporte da comunidade e tem uma grande documentação para um grande número de casos de uso e domínios.
Dito isso, a FastAPI tem pontuação muito melhor quando se trata de análise de dados e suporte à ciência de dados:
- O Python tem um vasto ecossistema de bibliotecas avançadas para tarefas de ciência de dados e aprendizado de máquina, facilitando a adição de pipelines de análise e processamento de dados às aplicações web. Embora o Node.js ofereça suporte a essas bibliotecas, elas não são tão completas quanto as bibliotecas do Python.
- O design intuitivo da API da FastAPI, a geração automática de documentação da OpenAPI e o suporte integrado para validação de dados simplificam o desenvolvimento da API e o tornam acessível para desenvolvedores de todos os níveis de habilidades. Pode ser difícil aprender Node.js para um novato devido aos conceitos da programação baseada em chamada de resposta e à complexidade do gerenciamento de dependências.
- Enquanto o Python é estritamente tipado, o JavaScript é impreciso, o que pode levar a erros de tempo de execução.
Casos de uso para a pilha FARM
A pilha FARM é adequada para uma ampla faixa de casos de uso em vários domínios e setores, alguns dos quais estão listados abaixo:
- Construção de websites e páginas da web dinâmicos e interativos: no front-end, o React oferece uma experiência interativa em tempo real aos usuários, enquanto o back-end FastAPI permite criar REST APIs robustas para lidar com autenticação, autorização e transações. O MongoDB, devido ao seu esquema flexível, acomoda facilmente os requisitos de aplicação em evolução e estruturas de dados variadas — por exemplo, plataformas e-commerce e sistemas de gerenciamento de conteúdo.
- AI e análise de dados: usando o poder do framework de agregação MongoDB e as bibliotecas de ciência de dados Python, a pilha FARM fornece uma base robusta para os desenvolvedores criarem sistemas para processamento de dados, análise em tempo real, obtenção de perspicácia prática e geração de relatórios visuais. O front-end do React pode ser utilizado para painéis interativos e exploração de dados.
- Aplicações IoT (Internet of Things): usando React, os desenvolvedores podem criar uma interface tranquila para monitoramento e controle remoto. A FastAPI lida com serviços como ingestão de dados, comunicação de dispositivos e roteamento. O MongoDB pode armazenar os dados do sensor, metadados e logs e pode ser usado para análise e detecção de anomalias.
- Aplicativos de chat: as funcionalidades de renderização em tempo real do React permitem uma comunicação tranquila e em tempo real entre o agente e os usuários. As funcionalidades de roteamento da FastAPI e o suporte a websocket permitem lidar com solicitações HTTP para autenticação, mensagens em tempo real e comunicação bidirecional. A arquitetura flexível e dimensionável do MongoDB o torna altamente adequado para lidar com dados de chat dinâmicos e em evolução.
Resumo
A pilha FARM é uma pilha de tecnologia promissora e oferece uma potência de recursos para criar aplicativos altamente flexíveis, dimensionáveis e de alto desempenho. Nos próximos dias, você pode esperar mais inovações e avanços nas tecnologias, com mais foco no aprimoramento da experiência e na produtividade do desenvolvedor, na automação e na integração com outras tecnologias para facilitar novos casos de uso e aplicativos. Para começar a usar o stack FARM, assista ao tutorial MongoDB.live.