66
RESTFUL webservices Construindo Apis http://bit.ly/ZhgkiB

ReSTFul Api's com FRAPI

Embed Size (px)

DESCRIPTION

Crie suas API

Citation preview

Page 1: ReSTFul Api's com FRAPI

RESTFUL webservicesConstruindo Apis

http://bit.ly/ZhgkiB

Page 2: ReSTFul Api's com FRAPI

Agenda

Eu

API's

Frapi

Demo

Page 3: ReSTFul Api's com FRAPI

Mercantólogo por formação, desenvolvedor por paixão!

Ativista por consciência!

Alex Piaz (@zaip)[email protected]

http://www.zaip.net

Page 4: ReSTFul Api's com FRAPI

Há 15+ anos nas interwebs...

Page 5: ReSTFul Api's com FRAPI

Há 13 anos...

1998

Page 6: ReSTFul Api's com FRAPI

Há 7 anos...

1998

www.socioambiental.org

Page 7: ReSTFul Api's com FRAPI

Gleilson Miranda/Secretaria de Comunicação do Estado do Acre/FUNAI

Page 8: ReSTFul Api's com FRAPI

Chefe Almir Suruí

Page 9: ReSTFul Api's com FRAPI

1998

Page 10: ReSTFul Api's com FRAPI

É só fazer um "XML" que resolve....

Page 11: ReSTFul Api's com FRAPI

É só fazer um "XML" que resolve....

Page 12: ReSTFul Api's com FRAPI

Ao vivo é muito pior!

Page 13: ReSTFul Api's com FRAPI

Ao vivo é muito pior!http://www.youtube.com/watch?v=9C-IDT__1HE

Page 15: ReSTFul Api's com FRAPI

UMA API É UM CONTRATO !

Page 16: ReSTFul Api's com FRAPI

Controle de acesso

Page 18: ReSTFul Api's com FRAPI

Autorização

Page 19: ReSTFul Api's com FRAPI

Uso

Page 20: ReSTFul Api's com FRAPI

Documentação

Page 21: ReSTFul Api's com FRAPI

Formatos de saída

Page 22: ReSTFul Api's com FRAPI

versões

Page 23: ReSTFul Api's com FRAPI

Mensagens!

Page 24: ReSTFul Api's com FRAPI

ReSTRepresentational State Transfer

Page 26: ReSTFul Api's com FRAPI

Estilo Arquitetural

Page 27: ReSTFul Api's com FRAPI

HTTPRFC 2616

Page 28: ReSTFul Api's com FRAPI

HTTP PARA DESIGNERS

Cliente / Servidor

Interface Uniforme

Camadas

Stateless

Cache

Page 29: ReSTFul Api's com FRAPI

ReSTafarianos x Pragmaresticos

Page 30: ReSTFul Api's com FRAPI

ReST Constraints● Cliente/Servidor

● Interface Uniforme

● Cache

● Stateless

● Camadas

● Código sob demanda *

Page 31: ReSTFul Api's com FRAPI

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 substantivosPrefira o plural ao singular2 URLs por recurso

Page 32: ReSTFul Api's com FRAPI

Manipulação dos recursos através de suas representações

Interface Uniforme

GET http://api.piaz.com.br/ufoapi/v1/casos/1

Page 33: ReSTFul Api's com FRAPI

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

Page 34: ReSTFul Api's com FRAPI

http://stateless.co/hal_specification.html

HALHypertext 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" }, } ,}

WRMLWeb resource modeling languagehttp://www.wrml.org/modelingLanguage

Page 35: ReSTFul Api's com FRAPI

Richardson Maturity Model

Page 36: ReSTFul Api's com FRAPI

E o FRAPI entra em cena!

http://getfrapi.com

Page 37: ReSTFul Api's com FRAPI

FRAMEWORK API

Page 38: ReSTFul Api's com FRAPI

INSTALAÇÃO

Page 39: ReSTFul Api's com FRAPI

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

Page 40: ReSTFul Api's com FRAPI

git clone git://github.com/frapi/frapi.gitgit 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

Page 41: ReSTFul Api's com FRAPI

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

Page 42: ReSTFul Api's com FRAPI

<VirtualHost *:80> ServerName admin.frapi DirectoryIndex index.php ServerAdmin [email protected]

# 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 [email protected] 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_PATHchmod 775 FRAPI_PATH/src/frapi/custom/Actionchmod 775 FRAPI_PATH/src/frapi/custom/Config/chmod 664 FRAPI_PATH/src/frapi/custom/Config/*.xml

Page 43: ReSTFul Api's com FRAPI

Dá pra instalar sem 2 vhosts?

http://www.felipemarques.com.br/tag/alex-piaz/

SIM

Page 44: ReSTFul Api's com FRAPI

INSTALAÇÃO / Finalizando

Page 45: ReSTFul Api's com FRAPI
Page 46: ReSTFul Api's com FRAPI
Page 47: ReSTFul Api's com FRAPI
Page 48: ReSTFul Api's com FRAPI

UFO APIPrincipais casos da Ufologia Mundial REST!

CRUD

Page 49: ReSTFul Api's com FRAPI

UFO APIModelo

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!

Page 50: ReSTFul Api's com FRAPI

UFO APIPrincipais casos da Ufologia Mundial REST!

Custom_Model_Caso()

getCasos()

getCaso($id)

getCasosPorPais($pais)

insertCaso($data)

updateCaso($id,$data)

deleteCaso($id)

Page 51: ReSTFul Api's com FRAPI

FRAPI_PATH/src/frapi/custom/Action

Page 52: ReSTFul Api's com FRAPI

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

Page 53: ReSTFul Api's com FRAPI

UFO APIPrincipais casos da Ufologia Mundial em ReSTFul!

Mensagens de erro

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Page 54: ReSTFul Api's com FRAPI

UFO APIAction Casos - http://ufo-api.piaz.com.br/casos (GET POST HEAD)

Page 55: ReSTFul Api's com FRAPI

UFO APIAction Casos - http://api.piaz.com.br/ufoapi/v1/casos (GET)

Page 56: ReSTFul Api's com FRAPI

UFO APIAction Casos - http://api.piaz.com.br/ufoapi/v1/casos (POST)

Page 57: ReSTFul Api's com FRAPI

UFO APIAction Casos - http://api.piaz.com.br/ufoapi/v1/casos (HEAD)

Page 58: ReSTFul Api's com FRAPI

UFO APIPrincipais casos da Ufologia Mundial ReST!

http://api.piaz.com.br/ufoapi/v1/casos/{id} (POST PUT DELETE)

Page 59: ReSTFul Api's com FRAPI

UFO APIAction Caso - http://api.piaz.com.br/ufoapi/v1/casos/{id} (GET)

Page 60: ReSTFul Api's com FRAPI

UFO APIAction Caso - http://api.piaz.com.br/ufoapi/v1/casos/{id} (PUT)

Page 61: ReSTFul Api's com FRAPI

UFO APIAction Caso - http://api.piaz.com.br/ufoapi/v1/casos/{id} (DELETE)

Page 62: ReSTFul Api's com FRAPI

Gerando documentação...

http://frapi-admin/docs/generate/format/texthttp://frapi-admin/docs/generate/format/htmlhttp://frapi-admin/docs/generate/format/mdownhttp://frapi-admin/docs/generate/format/pdf

Page 63: ReSTFul Api's com FRAPI
Page 64: ReSTFul Api's com FRAPI

Utilidadesimplementing-restExploring the implementation aspects of the REST architectural style.

https://code.google.com/p/implementing-rest/

PostMan - Rest Client para o Chromehttps://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 Modelhttp://martinfowler.com/articles/richardsonMaturityModel.html

Swagger (Documentação para sua API)https://developers.helloreverb.com/swagger/

API Best Praticeshttp://apigee.com/about/api-best-practices

HTTP (RFC 2616)http://tools.ietf.org/html/rfc2616

Page 66: ReSTFul Api's com FRAPI