SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
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
Agenda
● O Problema
● Uma Solução
● Python-Eve: Features
● Caso de Estudo
● Conclusão
● Perguntas
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
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
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
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
Python-Eve: Features
● JSONP
● Read-only by default
● Default Values
● Predefined Database Filters
● Projections
● Embedded Resource Serialization
● Event Hooks
● Rate Limiting
● Custom ID Fields
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
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
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”
Links
● Apresentaçãoes REST + EVE
○ https://speakerdeck.com/nicola/restful-web-api-and-mongodb-go-for-a-
pic-nic
○ https://speakerdeck.com/nicola/eve-rest-api-for-humans
○ https://speakerdeck.com/nicola/mongodb-and-rest-apis-a-match-made-in-
heaven
● Outros utilitários:
○ https://pypi.python.org/pypi/sadisplay
○ https://pypi.python.org/pypi/sqlacodegen
Perguntas?
Rudá Porto
Filgueiras
Twitter: @rudaporto
Github: @rudaporto
Email: rudazz@gmail.com
Obrigado!

Mais conteúdo relacionado

Destaque

презентация "У каждого семья своя"
презентация "У каждого семья своя"презентация "У каждого семья своя"
презентация "У каждого семья своя"lutiks
 
Cеминар практикум взаимоотношения педагога с педагогическим сообществом
Cеминар практикум взаимоотношения педагога с педагогическим сообществомCеминар практикум взаимоотношения педагога с педагогическим сообществом
Cеминар практикум взаимоотношения педагога с педагогическим сообществомlutiks
 
Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...
Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...
Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...Innovecs
 
ScreenPlay Design Patterns for QA Automation
ScreenPlay Design Patterns for QA AutomationScreenPlay Design Patterns for QA Automation
ScreenPlay Design Patterns for QA AutomationCOMAQA.BY
 
Advanced locators - little prince
Advanced locators - little princeAdvanced locators - little prince
Advanced locators - little princeCOMAQA.BY
 
iBeacon в гиперлокальном маркетинге
iBeacon в гиперлокальном маркетингеiBeacon в гиперлокальном маркетинге
iBeacon в гиперлокальном маркетингеAppTractor
 
Set up Hadoop Cluster on Amazon EC2
Set up Hadoop Cluster on Amazon EC2Set up Hadoop Cluster on Amazon EC2
Set up Hadoop Cluster on Amazon EC2IMC Institute
 
LVEE 2014: Text parsing with Python and PLY
LVEE 2014: Text parsing with Python and PLYLVEE 2014: Text parsing with Python and PLY
LVEE 2014: Text parsing with Python and PLYdmbaturin
 
Big Data Programming Using Hadoop Workshop
Big Data Programming Using Hadoop WorkshopBig Data Programming Using Hadoop Workshop
Big Data Programming Using Hadoop WorkshopIMC Institute
 
Big Data Analytics Using Hadoop Cluster On Amazon EMR
Big Data Analytics Using Hadoop Cluster  On Amazon EMRBig Data Analytics Using Hadoop Cluster  On Amazon EMR
Big Data Analytics Using Hadoop Cluster On Amazon EMRIMC Institute
 
Management of fractured endodontic instruments in root canal
Management of fractured endodontic instruments in root canalManagement of fractured endodontic instruments in root canal
Management of fractured endodontic instruments in root canalMohammed Sa'ad
 
Gawad sa Manlilikha ng Bayan
Gawad sa Manlilikha ng BayanGawad sa Manlilikha ng Bayan
Gawad sa Manlilikha ng BayanCandice May
 
BigData & Supply Chain: A "Small" Introduction
BigData & Supply Chain: A "Small" IntroductionBigData & Supply Chain: A "Small" Introduction
BigData & Supply Chain: A "Small" IntroductionIvan Gruer
 
How to use Big Data and Data Lake concept in business using Hadoop and Spark...
 How to use Big Data and Data Lake concept in business using Hadoop and Spark... How to use Big Data and Data Lake concept in business using Hadoop and Spark...
How to use Big Data and Data Lake concept in business using Hadoop and Spark...Institute of Contemporary Sciences
 
Django - Python MVC Framework
Django - Python MVC FrameworkDjango - Python MVC Framework
Django - Python MVC FrameworkBala Kumar
 
Bigdata Machine Learning Platform
Bigdata Machine Learning PlatformBigdata Machine Learning Platform
Bigdata Machine Learning PlatformMk Kim
 
HTTP Plugin for MySQL!
HTTP Plugin for MySQL!HTTP Plugin for MySQL!
HTTP Plugin for MySQL!Ulf Wendel
 
RPP SMA Bahasa Inggris Kelas XII
RPP SMA Bahasa Inggris Kelas XIIRPP SMA Bahasa Inggris Kelas XII
RPP SMA Bahasa Inggris Kelas XIIDiva Pendidikan
 

Destaque (20)

презентация "У каждого семья своя"
презентация "У каждого семья своя"презентация "У каждого семья своя"
презентация "У каждого семья своя"
 
Cеминар практикум взаимоотношения педагога с педагогическим сообществом
Cеминар практикум взаимоотношения педагога с педагогическим сообществомCеминар практикум взаимоотношения педагога с педагогическим сообществом
Cеминар практикум взаимоотношения педагога с педагогическим сообществом
 
Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...
Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...
Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...
 
ScreenPlay Design Patterns for QA Automation
ScreenPlay Design Patterns for QA AutomationScreenPlay Design Patterns for QA Automation
ScreenPlay Design Patterns for QA Automation
 
Advanced locators - little prince
Advanced locators - little princeAdvanced locators - little prince
Advanced locators - little prince
 
iBeacon в гиперлокальном маркетинге
iBeacon в гиперлокальном маркетингеiBeacon в гиперлокальном маркетинге
iBeacon в гиперлокальном маркетинге
 
Rest api with Python
Rest api with PythonRest api with Python
Rest api with Python
 
Set up Hadoop Cluster on Amazon EC2
Set up Hadoop Cluster on Amazon EC2Set up Hadoop Cluster on Amazon EC2
Set up Hadoop Cluster on Amazon EC2
 
LVEE 2014: Text parsing with Python and PLY
LVEE 2014: Text parsing with Python and PLYLVEE 2014: Text parsing with Python and PLY
LVEE 2014: Text parsing with Python and PLY
 
Big Data Programming Using Hadoop Workshop
Big Data Programming Using Hadoop WorkshopBig Data Programming Using Hadoop Workshop
Big Data Programming Using Hadoop Workshop
 
Big Data Analytics Using Hadoop Cluster On Amazon EMR
Big Data Analytics Using Hadoop Cluster  On Amazon EMRBig Data Analytics Using Hadoop Cluster  On Amazon EMR
Big Data Analytics Using Hadoop Cluster On Amazon EMR
 
Management of fractured endodontic instruments in root canal
Management of fractured endodontic instruments in root canalManagement of fractured endodontic instruments in root canal
Management of fractured endodontic instruments in root canal
 
Gawad sa Manlilikha ng Bayan
Gawad sa Manlilikha ng BayanGawad sa Manlilikha ng Bayan
Gawad sa Manlilikha ng Bayan
 
BigData & Supply Chain: A "Small" Introduction
BigData & Supply Chain: A "Small" IntroductionBigData & Supply Chain: A "Small" Introduction
BigData & Supply Chain: A "Small" Introduction
 
How to use Big Data and Data Lake concept in business using Hadoop and Spark...
 How to use Big Data and Data Lake concept in business using Hadoop and Spark... How to use Big Data and Data Lake concept in business using Hadoop and Spark...
How to use Big Data and Data Lake concept in business using Hadoop and Spark...
 
Django - Python MVC Framework
Django - Python MVC FrameworkDjango - Python MVC Framework
Django - Python MVC Framework
 
Bigdata Machine Learning Platform
Bigdata Machine Learning PlatformBigdata Machine Learning Platform
Bigdata Machine Learning Platform
 
HTTP Plugin for MySQL!
HTTP Plugin for MySQL!HTTP Plugin for MySQL!
HTTP Plugin for MySQL!
 
Data Lake,beyond the Data Warehouse
Data Lake,beyond the Data WarehouseData Lake,beyond the Data Warehouse
Data Lake,beyond the Data Warehouse
 
RPP SMA Bahasa Inggris Kelas XII
RPP SMA Bahasa Inggris Kelas XIIRPP SMA Bahasa Inggris Kelas XII
RPP SMA Bahasa Inggris Kelas XII
 

Semelhante a Python Eve - APIs RESTful Profissionais em poucas linhas

REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com JavaJugVale
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAnitaibezerra
 
Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com JavajesuinoPower
 
Aplicações Web com Python e Google App Engine
Aplicações Web com Python e Google App EngineAplicações Web com Python e Google App Engine
Aplicações Web com Python e Google App EngineRodrigo Amaral
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Cláudio Leopoldino
 
Adoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da ParaíbaAdoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da ParaíbaThiago Curvelo
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Alfresco ECM e Gestão Eletrônica de Documentos Open Source
Alfresco ECM e Gestão Eletrônica de Documentos Open SourceAlfresco ECM e Gestão Eletrônica de Documentos Open Source
Alfresco ECM e Gestão Eletrônica de Documentos Open SourceAmbiente Livre
 
REST - The right way
REST - The right wayREST - The right way
REST - The right waysantosluis87
 
Apis palestra 7º JUG Vale
Apis palestra 7º JUG Vale Apis palestra 7º JUG Vale
Apis palestra 7º JUG Vale Pedro Hos
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...tdc-globalcode
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comandoRafael Gomes
 
Precisamos falar sobre Testes de infraestrutura
Precisamos falar sobre Testes de infraestruturaPrecisamos falar sobre Testes de infraestrutura
Precisamos falar sobre Testes de infraestruturaRafael Gomes
 

Semelhante a Python Eve - APIs RESTful Profissionais em poucas linhas (20)

REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
 
Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com Java
 
Aplicações Web com Python e Google App Engine
Aplicações Web com Python e Google App EngineAplicações Web com Python e Google App Engine
Aplicações Web com Python e Google App Engine
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013
 
Django
DjangoDjango
Django
 
Adoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da ParaíbaAdoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da Paraíba
 
Migracao colaborativa
Migracao colaborativaMigracao colaborativa
Migracao colaborativa
 
SINFO Geração ALPHA
SINFO Geração ALPHASINFO Geração ALPHA
SINFO Geração ALPHA
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Alfresco ECM e Gestão Eletrônica de Documentos Open Source
Alfresco ECM e Gestão Eletrônica de Documentos Open SourceAlfresco ECM e Gestão Eletrônica de Documentos Open Source
Alfresco ECM e Gestão Eletrônica de Documentos Open Source
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
REST - The right way
REST - The right wayREST - The right way
REST - The right way
 
Apis palestra 7º JUG Vale
Apis palestra 7º JUG Vale Apis palestra 7º JUG Vale
Apis palestra 7º JUG Vale
 
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
TDC2016POA | Trilha BigData - Orquestrando Hadoop, Cassandra e MongoDB com o ...
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Docker como super comando
Docker como super comandoDocker como super comando
Docker como super comando
 
Spring boot
Spring bootSpring boot
Spring boot
 
Precisamos falar sobre Testes de infraestrutura
Precisamos falar sobre Testes de infraestruturaPrecisamos falar sobre Testes de infraestrutura
Precisamos falar sobre Testes de infraestrutura
 

Python Eve - APIs RESTful Profissionais em poucas linhas

  • 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
  • 5. 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
  • 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
  • 8. Python-Eve: Features ● JSONP ● Read-only by default ● Default Values ● Predefined Database Filters ● Projections ● Embedded Resource Serialization ● Event Hooks ● Rate Limiting ● Custom ID Fields
  • 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”
  • 12. Links ● Apresentaçãoes REST + EVE ○ https://speakerdeck.com/nicola/restful-web-api-and-mongodb-go-for-a- pic-nic ○ https://speakerdeck.com/nicola/eve-rest-api-for-humans ○ https://speakerdeck.com/nicola/mongodb-and-rest-apis-a-match-made-in- heaven ● Outros utilitários: ○ https://pypi.python.org/pypi/sadisplay ○ https://pypi.python.org/pypi/sqlacodegen
  • 14. Rudá Porto Filgueiras Twitter: @rudaporto Github: @rudaporto Email: rudazz@gmail.com Obrigado!