SlideShare uma empresa Scribd logo
RESTFUL webservicesConstruindo Apis
http://bit.ly/ZhgkiB
Agenda
Eu
API's
Frapi
Demo
Mercantólogo por formação, desenvolvedor por paixão!
Ativista por consciência!
Alex Piaz (@zaip)
alex@piaz.com.br
http://www.zaip.net
Há 15+ anos nas interwebs...
Há 13 anos...
1998
Há 7 anos...
1998
www.socioambiental.org
Gleilson Miranda/Secretaria de Comunicação do Estado do Acre/FUNAI
Chefe Almir Suruí
1998
É só fazer um "XML" que
resolve....
É só fazer um "XML" que
resolve....
Ao vivo é muito pior!
Ao vivo é muito pior!
http://www.youtube.com/watch?v=9C-IDT__1HE
APIhttp://en.wikipedia.org/wiki/Application_programming_interface
UMA API É UM CONTRATO !
Controle de acesso
IDENTIFICACAO
http://blogs.estadao.com.br/radar-pop/homem-e-preso-em-recife-por-apresentar-rg-com-foto-de-jack-nicholson/
Autorização
Uso
Documentação
Formatos de saída
versões
Mensagens!
ReST
Representational State Transfer
http://alganet.github.io/rest-client-side/#/rest-roy
Estilo Arquitetural
HTTP
RFC 2616
HTTP PARA DESIGNERS
Cliente / Servidor
Interface Uniforme
Camadas
Stateless
Cache
ReSTafarianos x Pragmaresticos
ReST Constraints
● Cliente/Servidor
● Interface Uniforme
● Cache
● Stateless
● Camadas
● Código sob demanda *
Recursos :: URLs + Verbos HTTP
Interface Uniforme
GET http://api.piaz.com.br/ufoapi/v1/casos/1
POST http://api.piaz.com.br/ufoapi/v1/casos/1
PUT http://api.piaz.com.br/ufoapi/v1/casos/1
DELETE http://api.piaz.com.br/ufoapi/v1/casos/1
HEAD http://api.piaz.com.br/ufoapi/v1/casos/1
Recursos são substantivos
Prefira o plural ao singular
2 URLs por recurso
Manipulação dos recursos através de suas representações
Interface Uniforme
GET http://api.piaz.com.br/ufoapi/v1/casos/1
Mensagens auto-descritivas
Interface Uniforme
Cabeçalhos e Status Codes do HTTP
1xx - Informativo
2xx - Sucesso
3xx - Redirecionamento
4xx - Erro do cliente
5xx - Erro do servidor
http://stateless.co/hal_specification.html
HAL
Hypertext Application Language
HATEOAS - Hypermedia as the Engine of Application State
Interface Uniforme
{
"_links": {
"self": { "href": "/ufoapi/v1/casos/2" },
"next": { "href": "/ufoapi/v1/casos/3" },
"prev": { "href": "/ufoapi/v1/casos/1" },
} ,
}
WRML
Web resource modeling language
http://www.wrml.org/modelingLanguage
Richardson Maturity Model
E o FRAPI entra em cena!
http://getfrapi.com
FRAMEWORK API
INSTALAÇÃO
INSTALAÇÃO / Requisitos mínimos
○ Webserver (apache, nginx, iis)
○ PHP >= 5.2.4
○ gettext
○ XMLWriter
○ PEAR
○ APC *
* Pode ser instalado sem o APC ou com outro
mecanismo de caching mas não é recomendado
http://frapi.github.com/installing/caching.html
http://frapi.github.com/installing/index.html
git clone git://github.com/frapi/frapi.git
git clone git://github.com/zaip/frapi.git
ou
wget https://github.com/frapi/frapi/tarball/master
tar -xzvf frapi-frapi-VERSION.tar.gz
FRAPI_PATH = local/onde/voce/desempacotou/o/frapi
INSTALAÇÃO / Obtendo o software
Interface administrativa API Pública
Camadas de interação
● Zend Framework
● Actions e Errors
● Autenticação
● Documentação
● Ambiente de testes
● Produção
● PHP
● Cache
● Request
● Response
Interface CLI
● Admin via terminal
<VirtualHost *:80>
ServerName admin.frapi
DirectoryIndex index.php
ServerAdmin admin@api.frapi
# This should be omitted in the production
environment
SetEnv APPLICATION_ENV development
DocumentRoot FRAPI_PATH/src/ frapi/admin/public
<Directory FRAPI_PATH/src/frapi/admin/public>
AllowOverride All
Order deny,allow
Allow from All
</Directory>
</VirtualHost>
Interface Administrativa
<VirtualHost *:80>
ServerName api.frapi
ServerAdmin admin@api.frapi
DocumentRoot FRAPI_PATH/src/ frapi/public
# This should be omitted in the production
environment
SetEnv APPLICATION_ENV development
<Directory FRAPI_PATH/src/frapi/public>
AllowOverride All
Order deny,allow
Allow from All
</Directory>
</VirtualHost>
API Pública
INSTALAÇÃO / Configurando
2 virtual host
Permissões de acesso
chown -R username.web-user FRAPI_PATH
chmod 775 FRAPI_PATH/src/frapi/custom/Action
chmod 775 FRAPI_PATH/src/frapi/custom/Config/
chmod 664 FRAPI_PATH/src/frapi/custom/Config/*.xml
Dá pra instalar sem 2 vhosts?
http://www.felipemarques.com.br/tag/alex-piaz/
SIM
INSTALAÇÃO / Finalizando
ReSTFul Api's com FRAPI
ReSTFul Api's com FRAPI
ReSTFul Api's com FRAPI
UFO API
Principais casos da Ufologia Mundial REST!
CRUD
UFO API
Modelo
Mensagens de erro (Not found [404] / NO PUT/DELETE/POST [405] )
2 URLs === 2 actions
//api.piaz.com.br/ufoapi/v1/casos (GET POST)
//api.piaz.com.br/ufoapi/v1/casos/{id} (GET PUT DELETE)
Complexidade vai na Query String
//api.piaz.com.br/ufoapi/v1/casos?pais=Brasil
Principais casos da Ufologia Mundial em ReSTFul!
UFO APIPrincipais casos da Ufologia Mundial REST!
Custom_Model_Caso()
getCasos()
getCaso($id)
getCasosPorPais($pais)
insertCaso($data)
updateCaso($id,$data)
deleteCaso($id)
FRAPI_PATH/src/frapi/custom/Action
UFO APIPrincipais casos da Ufologia Mundial em ReSTFul!
Métodos disponibilizados pelo FRAPI
executeGet()
executePost()
executePut()
executeDelete()
executeHead()http://frapi.github.com/developing/coding-actions.html
UFO APIPrincipais casos da Ufologia Mundial em ReSTFul!
Mensagens de erro
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
UFO APIAction Casos - http://ufo-api.piaz.com.br/casos (GET POST HEAD)
UFO APIAction Casos - http://api.piaz.com.br/ufoapi/v1/casos (GET)
UFO APIAction Casos - http://api.piaz.com.br/ufoapi/v1/casos (POST)
UFO APIAction Casos - http://api.piaz.com.br/ufoapi/v1/casos (HEAD)
UFO APIPrincipais casos da Ufologia Mundial ReST!
http://api.piaz.com.br/ufoapi/v1/casos/{id} (POST PUT DELETE)
UFO APIAction Caso - http://api.piaz.com.br/ufoapi/v1/casos/{id} (GET)
UFO APIAction Caso - http://api.piaz.com.br/ufoapi/v1/casos/{id} (PUT)
UFO APIAction Caso - http://api.piaz.com.br/ufoapi/v1/casos/{id} (DELETE)
Gerando documentação...
http://frapi-admin/docs/generate/format/text
http://frapi-admin/docs/generate/format/html
http://frapi-admin/docs/generate/format/mdown
http://frapi-admin/docs/generate/format/pdf
ReSTFul Api's com FRAPI
Utilidades
implementing-rest
Exploring the implementation aspects of the REST architectural style.
https://code.google.com/p/implementing-rest/
PostMan - Rest Client para o Chrome
https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm
Tese do Roy Fieldling (nascimento do ReST)
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
Richardson Maturity Model
http://martinfowler.com/articles/richardsonMaturityModel.html
Swagger (Documentação para sua API)
https://developers.helloreverb.com/swagger/
API Best Pratices
http://apigee.com/about/api-best-practices
HTTP (RFC 2616)
http://tools.ietf.org/html/rfc2616
Arquivos desta palestra
https://www.dropbox.
com/sh/u0qqmm49ursrtpg/mofogHmsIi
ReSTFul Api's com FRAPI

Mais conteúdo relacionado

PPTX
Win401 caio garcez_windows_runtime
PPTX
Peace Project
PPT
Unit 6 Evaluating Elearning Practice 30 Nov09 1
PPT
Comm Network10 16 09v2
PPT
Coke Live Fresh Noise 2007
DOC
Commercial Property Refinancing
PPT
Melani Y Sharon
Win401 caio garcez_windows_runtime
Peace Project
Unit 6 Evaluating Elearning Practice 30 Nov09 1
Comm Network10 16 09v2
Coke Live Fresh Noise 2007
Commercial Property Refinancing
Melani Y Sharon

Destaque (18)

PDF
Enterey Overview 2012 V5
DOC
Star Work sheet
PDF
The Big Dutch 20 Year 730 Million Page Digitisation Challenge
PPT
TheEuropeanLibrary.org - a (non technical) case study. Olaf Janssen lecturing...
ODP
PHP e a Geoweb
PDF
Going mobile in accounting education upload
PDF
Optify Best Practices - Lead Generation Campaigns
PPTX
eMundus project: open education and international academic collaboration
PPT
Lat i long
PPT
σεμινάριο στη δυναμική των ομάδων στη Ξάνθη
PPS
Defensive driving النقطة العمياء لسائقي السيارات
PDF
Crib Blogger
PPT
eLearning in Europe: overview and debate
PPT
Symmetry
PPT
Cooperacion academica y educacion abierta
PPT
Google App Engine Google Apps
PPTX
Direct access
PPTX
Enterey Overview 2012 V5
Star Work sheet
The Big Dutch 20 Year 730 Million Page Digitisation Challenge
TheEuropeanLibrary.org - a (non technical) case study. Olaf Janssen lecturing...
PHP e a Geoweb
Going mobile in accounting education upload
Optify Best Practices - Lead Generation Campaigns
eMundus project: open education and international academic collaboration
Lat i long
σεμινάριο στη δυναμική των ομάδων στη Ξάνθη
Defensive driving النقطة العمياء لسائقي السيارات
Crib Blogger
eLearning in Europe: overview and debate
Symmetry
Cooperacion academica y educacion abierta
Google App Engine Google Apps
Direct access
Anúncio

Semelhante a ReSTFul Api's com FRAPI (20)

ODP
Php7 esta chgando! O que você precisa saber
ODP
Otimizando a execução de código-fonte PHP
PDF
Security & PHP
PDF
2290494 integrando-flex-com-php
PDF
Ligação do Flex a um backend LAMP usando AMFPHP
KEY
Plack
ODP
NOSQLBA 2018 - ArangoDB com python
PDF
15 coisas sobre php para saber antes de morrer
PDF
php4android: desenvolva aplicações android em PHP
PDF
PHP para aplicações Web de grande porte
PDF
O que é esse tal de rest? [PyBR2016]
PDF
TDC2016POA | Trilha IoT - Controlando AR Drone com PHP
PDF
Os 7 Pecados Capitais na exposição de APIs RESTful
PPTX
Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017
ODP
Desmistificando web2py - #TDC2011
PDF
PHP: Evolução
PDF
Web Offline
PDF
Desenvolvimento web ágil com python e web2py
PDF
Tudo o que você precisa saber sobre o php7
PPTX
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Php7 esta chgando! O que você precisa saber
Otimizando a execução de código-fonte PHP
Security & PHP
2290494 integrando-flex-com-php
Ligação do Flex a um backend LAMP usando AMFPHP
Plack
NOSQLBA 2018 - ArangoDB com python
15 coisas sobre php para saber antes de morrer
php4android: desenvolva aplicações android em PHP
PHP para aplicações Web de grande porte
O que é esse tal de rest? [PyBR2016]
TDC2016POA | Trilha IoT - Controlando AR Drone com PHP
Os 7 Pecados Capitais na exposição de APIs RESTful
Criptomoedas e .NET - Consumindo algumas APIs existentes - Julho-2017
Desmistificando web2py - #TDC2011
PHP: Evolução
Web Offline
Desenvolvimento web ágil com python e web2py
Tudo o que você precisa saber sobre o php7
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Anúncio

Mais de Alex Piaz (6)

PDF
Drupal e webservices: O caso do website das Unidades de Conservação
PPT
Vários sites, um Drupal
ODP
Utilizando a API do Foursquare com PHP
ODP
Utilizando a API do Live Messenger (MSN) com PHP
ODP
Desenvolvendo aplicações web para o Iphone
ODP
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Drupal e webservices: O caso do website das Unidades de Conservação
Vários sites, um Drupal
Utilizando a API do Foursquare com PHP
Utilizando a API do Live Messenger (MSN) com PHP
Desenvolvendo aplicações web para o Iphone
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...

Último (19)

PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Apple Pippin Uma breve introdução. - David Glotz
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Processos na gestão de transportes, TM100 Col18
Custos e liquidação no SAP Transportation Management, TM130 Col18
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
COBITxITIL-Entenda as diferença em uso governança TI
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Aula 18 - Manipulacao De Arquivos python
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula04-Academia Heri- Tecnologia Geral 2025
Apple Pippin Uma breve introdução. - David Glotz

ReSTFul Api's com FRAPI