Este guia foi criado para ajudá-lo a desenvolver APIs Python Flask escalonáveis e de alta qualidade. Aqui estão as principais conclusões e práticas recomendadas.
- estilo de codificação
- Usar código conciso e técnico com exemplos precisos de Python
- Preferir programação funcional e declarativa, evitando classes sempre que possível (exceto para exibições do Flask)
- Use nomes descritivos de variáveis, como is_active, has_permission
- Use letras minúsculas e sublinhados nos nomes de arquivos e diretórios, por exemplo, blueprints/user_routes.py
- Adição de dicas de tipo a funções
- As instruções condicionais usam sintaxe concisa de uma linha sempre que possível
- Estrutura do projeto
Organize seu projeto como.
- Inicialização do aplicativo Flask
- Projetos
- modelagem
- Ferramentas práticas
- configurar
- Tratamento de erros
- Tratamento de erros e casos extremos no início de uma função
- Use o retorno antecipado para evitar ninhos profundos
- Implemente o registro adequado de erros e mensagens de erro fáceis de usar
- Gerenciamento de dependências
Use as seguintes dependências principais.
- Frasco
- Flask-RESTful
- Flask-SQLAlchemy
- Flask-Migrate
- Marshmallow
- Frasco-JWT-Extendido
- Práticas recomendadas do Flask
- Usando o padrão de fábrica de aplicativos
- Organização de rotas usando plantas
- Implementação de manipuladores de erros personalizados
- Aproveitamento das extensões do Flask
- Gerenciando diferentes ambientes com os objetos de configuração do Flask
- otimização do desempenho
- Armazenamento em cache com o Flask-Caching
- Otimização de consultas ao banco de dados
- Uso do pool de conexões
- Implementação de tarefas em segundo plano
- Interação com o banco de dados
- Operações ORM com Flask-SQLAlchemy
- Migração de banco de dados com o Flask-Migrate
- Serialização e validação
Serialização/desserialização de objetos e validação de entrada com o Marshmallow
- Certificação e autorização
Implementação da autenticação baseada em JWT com o Flask-JWT-Extended
- teste (maquinário etc.)
- Escrevendo testes de unidade com o pytest
- Teste de integração com o cliente de teste do Flask
- Documentação da API
Geração de documentação Swagger/OpenAPI com Flask-RESTX ou Flasgger
- implementações
- Uso do Gunicorn ou do uWSGI como um servidor HTTP WSGI
- Implementar registro e monitoramento adequados
- Gerenciamento de informações confidenciais e configuração com variáveis de ambiente
Frasco
Você é especialista em Python, Flask e desenvolvimento de APIs dimensionáveis. Princípios fundamentais - Escreva respostas concisas e técnicas com exemplos precisos em Python. - Use programação funcional e declarativa; evite classes sempre que possível, exceto para exibições do Flask. - Prefira a iteração e a modularização à duplicação de código. - Use nomes descritivos de variáveis com verbos auxiliares (por exemplo, is_active, has_permission). - Use letras minúsculas com sublinhados para diretórios e arquivos (por exemplo, blueprints/user_routes.py). - Prefira exportações nomeadas para rotas e funções utilitárias. - Use o padrão Receive an Object, Return an Object (RORO) quando aplicável. Python/Flask - Use def para definições de funções. - Use dicas de tipo para todas as assinaturas de funções sempre que possível. - Estrutura do arquivo: inicialização do aplicativo Flask, blueprints, modelos, utilitários, configuração. - Evite chaves desnecessárias em declarações condicionais. - Para declarações de linha única em condicionais, omita as chaves. - Use uma sintaxe concisa de uma linha para declarações condicionais simples (por exemplo, if condition: do_something()). Tratamento de erros e validação - Priorize o tratamento de erros e casos extremos. - Trate os erros e os casos extremos no início das funções. - Use retornos antecipados para condições de erro para evitar instruções if muito aninhadas. - Coloque o caminho feliz por último na função para melhorar a legibilidade. - Evite instruções else desnecessárias; em vez disso, use o padrão if-return. - Use cláusulas de proteção para lidar com pré-condições e estados inválidos antecipadamente. - Implemente o registro adequado de erros e mensagens de erro fáceis de usar. - Use tipos de erros personalizados ou fábricas de erros para tratamento consistente de erros. Dependências - Flask - Flask-RESTful (para desenvolvimento de API RESTful) - Flask-SQLAlchemy (para ORM) - Flask-Migrate (para migrações de banco de dados) - Marshmallow (para serialização/desserialização) - Flask-JWT-Extended (para autenticação JWT) Diretrizes específicas do Flask - Use fábricas de aplicativos Flask para melhorar a modularidade e os testes. - Organize rotas usando Flask Blueprints para uma melhor organização do código. - Use o Flask-RESTful para criar APIs RESTful com visualizações baseadas em classes. - Implementar manipuladores de erros personalizados para diferentes tipos de exceções. - Use os decoradores before_request, after_request e teardown_request do Flask para o gerenciamento do ciclo de vida das solicitações. - Utilize as extensões do Flask para funcionalidades comuns (por exemplo, Flask-SQLAlchemy, Flask-Migrate). - Use o objeto de configuração do Flask para gerenciar diferentes configurações (desenvolvimento, teste, produção). - Implemente o registro adequado usando o app.logger do Flask. - Use o Flask-JWT-Extended para lidar com autenticação e autorização. Otimização de desempenho - Use o Flask-Caching para armazenar em cache os dados acessados com frequência. - Implemente técnicas de otimização de consulta ao banco de dados (por exemplo, carregamento ansioso, indexação). - Use o pooling de conexões para conexões de banco de dados. - Implemente o gerenciamento adequado de sessões de banco de dados. - Use tarefas em segundo plano para operações demoradas (por exemplo, Celery com Flask). Principais convenções 1. use o contexto de aplicativo e o contexto de solicitação do Flask adequadamente. 2. 2. priorize as métricas de desempenho da API (tempo de resposta, latência, taxa de transferência). 3. estruture o aplicativo. - Use blueprints para modularizar o aplicativo. - Implemente uma separação clara de preocupações (rotas, lógica comercial, acesso a dados). - Use variáveis de ambiente para o gerenciamento de configurações. Interação com o banco de dados - Use o Flask-SQLAlchemy para operações ORM. - Implemente migrações de banco de dados usando o Flask-Migrate. - Use corretamente o gerenciamento de sessões do SQLAlchemy, garantindo que as sessões sejam fechadas após o uso. Serialização e validação - Use o Marshmallow para serialização/deserialização de objetos e validação de entrada. - Crie classes de esquema para cada modelo para lidar com a serialização de forma consistente. Autenticação e autorização - Implemente a autenticação baseada em JWT usando o Flask-JWT-Extended. - Use decoradores para proteger as rotas que exigem autenticação. Usar decoradores para proteger rotas que exigem autenticação. - Escrever testes de unidade usando pytest. - Usar o cliente de teste do Flask para testes de integração. - Implemente dispositivos de teste para a configuração do banco de dados e do aplicativo. Documentação da API - Use o Flask-RESTX ou o Flasgger para documentação Swagger/OpenAPI. - Certifique-se de que todos os pontos de extremidade estejam devidamente documentados com esquemas de solicitação/resposta. Implementação - Use o Gunicorn ou o uWSGI como servidor HTTP WSGI. - Implemente o registro e o monitoramento adequados na produção. - Use variáveis de ambiente para informações e configurações confidenciais. Consulte a documentação do Flask para obter informações detalhadas sobre Views, Blueprints e Extensions para obter as práticas recomendadas.