python eve - apis restful profissionais em poucas linhas

14
Python-Eve APIs RESTful Profissionais em poucas linhas

Upload: ruda-filgueiras

Post on 09-Jan-2017

430 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Python Eve - APIs RESTful Profissionais em poucas linhas

Python-Eve

APIs RESTful Profissionais em poucas linhas

Page 2: Python Eve - APIs RESTful Profissionais em poucas linhas

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

Page 3: Python Eve - APIs RESTful Profissionais em poucas linhas

Agenda

● O Problema● Uma Solução● Python-Eve: Features● Caso de Estudo● Conclusão● Perguntas

Page 4: Python Eve - APIs RESTful Profissionais em poucas linhas

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

Page 5: Python Eve - APIs RESTful Profissionais em poucas linhas

Uma Solução : Python-Eve

● Python REST API Framework (for Humans)● Flask + Cerberus + Events + Redis + MongoDB + SQL● Extensions

○ ElasticSearch○ MongEngine / SQLAlchemy○ .Net○ OAuth2 example○ Swagger / Doc

● Author: http://nicolaiarocci.com/● Github: https://github.com/nicolaiarocci/eve

Page 6: Python Eve - APIs RESTful Profissionais em poucas linhas

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

Page 7: Python Eve - APIs RESTful Profissionais em poucas linhas

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

Page 8: Python Eve - APIs RESTful Profissionais em poucas linhas

Python-Eve: Features

● JSONP● Read-only by default● Default Values● Predefined Database Filters● Projections● Embedded Resource Serialization● Event Hooks● Rate Limiting● Custom ID Fields

Page 9: Python Eve - APIs RESTful Profissionais em poucas linhas

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

Page 10: Python Eve - APIs RESTful Profissionais em poucas linhas

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

Page 11: Python Eve - APIs RESTful Profissionais em poucas linhas

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”

Page 13: Python Eve - APIs RESTful Profissionais em poucas linhas

Perguntas?

Page 14: Python Eve - APIs RESTful Profissionais em poucas linhas

Rudá Porto Filgueiras

Twitter: @rudaportoGithub: @rudaporto

Email: [email protected]

Obrigado!