Este documento apresenta o framework Python-Eve para construção de APIs RESTful. Python-Eve fornece muitas funcionalidades como CRUD, filtragem, paginação e validação de dados utilizando poucas linhas de código. Um caso de uso é descrito migrando dados de um sistema legado para uma API RESTful usando Python-Eve e MongoDB.
2. Sobre @rudaporto
● Interesses
○ Desenvolvimento Web / DevOps
○ Microserviços / Arquiteturas Distribuídas
○ Metodologias Ágeis / Lean Startup
● Experiências
○ 18 anos em Tecnologia, 16 de Linux e 13 de Python
○ Palestrante em eventos OSS
○ Formação em Ciência da Computação
● Ocupações
○ Projetos Especias na Pearson Brasil
○ Membro Fundador da Associação Python Brasil
○ Entusiasta Python e OSS
3. Agenda
● O Problema
● Uma Solução
● Python-Eve: Features
● Caso de Estudo
● Conclusão
● Perguntas
4. O Problema
● O que eu quero?
○ Arquitetura Distribuída
○ Programar para uma Interface
○ Desacoplar Serviços
● Por que eu quero?
○ Ambiente Heterogêneo
○ Integrar Aplicações (Plataformas)
○ Facilitar o Desenvolvimento
● Como eu quero?
○ (Micro) Serviços RESTful
○ Facilidade de Rapidez - DRY
○ Requisitos Não Funcionais
6. Python-Eve: Features
● Emphasis on REST
● Full range of CRUD operations
● Customizable resource endpoints
● Customizable, multiple item endpoints
● Filtering and Sorting
● Pagination
● HATEOAS (Aka Hypermedia)
● JSON and XML Rendering
● Conditional Requests
7. Python-Eve: Features
● Data Integrity and Concurrency Control
● Bulk Inserts
● Data Validation
● Extensible Data Validation
● Resource-level Cache Control
● API Versioning
● Document Versioning
● Authentication
● CORS Cross-Origin Resource Sharing
9. Python-Eve: Features
● File Storage
● GeoJSON
● Internal Resources
● Enhanced Logging
● Operations Log
● MongoDB and SQL Support
● Powered by Flask
Detalhes: http://python-eve.org/features.html
10. Caso de Estudo: Trac
● Aplicação Legada
● REST API para Frontend
● Criação do virtualenb
○ mkdir trac_example
○ virtualenv --no-site-packages trac_example
○ cd trac_example
○ source bin/activate
○ pip install -r requirements.txt
● models.py gerado via sqlacodegen
○ sqlacodegen --outfile models.py postgres://trac:
meetup@python@localhost/trac
11. Conclusão
● Pontos Fortes
○ Muitas funcionalidades
○ Flexibilidade
■ Hooks, Events, Schema adjusts
○ Rapidez para MVP
● Contrapartidas
○ Feito para usar com MongoDB
○ Plugins ainda em desenvolvimento
○ Nem todo schemas SQL são suportados
○ Pode necessitar de ajustes no BD
○ Depender de um Framework que faz muitas “mágicas”