REST-fuuuu
RESTful e a polícia do HTTP
Igor Santos who?
- Desenvolvedor PHP desde os 16 (~7 anos)
- Já mexi com Ruby mas larguei essa vida
- Já brinquei com C e Python mas… too much
- Já mexi com JS e Titanium Mobile mas não dá sustento
- Já me diverti com Ember mas… deixa pra lá
- Já mexi com REST, tanto no servidor e cliente, e sempre que
posso, volto pra área
- Sempre no PHP, e esbarrando no JS
RESTful
RESTful……who?
REpresentational
State
Transfer
-ful: completo, pleno
Normalmente (sempre?) baseado em HTTP
RESTful……who?
Martin Fowler & Leonard Richardson, 2010: Steps toward the glory of REST
#0: O pântano do POX*
✓ Comunicação sobre o HTTP
✗ HTTP = protocolo facilitador de rede, somente
✗ Recursos? é de comer? RPC FTW
✗ Verbos HTTP? GETPOST all the things!
*POX: Plain Old XML
#0: O pântano do POX* *POX: Plain Old XML
POST /api/
<listEvents date=”2015-10-22”/>
----------------------------------------
HTTP/1.1 200 OK
<eventsList>
<event id=”10”>
<dates begin=”2015-10-22”>
<topics>
<topic>PHP</topic>
<topic>REST</topic>
</topics>
[...]
#0: O pântano do POJ-RPC* *POJ-RPC: Plain Old JSON over RPC
POST /api/
{ ‘method’: ‘listEvents’, date: ‘2015-10-22’ }
----------------------------------------
HTTP/1.1 200 OK
[
{
‘id’: 10,
‘start’: ‘2015-10-22’,
‘topics’: [ ‘PHP’, ‘REST’ ],
‘speakers’: [
{
...
#0: O pântano do POJ* *POJ: Plain Old JSON
POST /api/?method=events.list
{ date: ‘2015-10-22’ }
----------------------------------------
HTTP/1.1 200 OK
[
{
‘id’: 10,
‘start’: ‘2015-10-22’,
‘topics’: [ ‘PHP’, ‘REST’ ],
‘speakers’: [
{
...
#1: Resources!
✓ Comunicação sobre o HTTP
✓ URIs indicam o recurso desejado
✓ Recursos HTTP simplificados, para dividir os requests
✗ Verbos HTTP? GETPOST all the things!
#1: Resources RPC!
POST /api/events
{ ‘method’: ‘list’, date: ‘2015-10-22’ }
----------------------------------------
HTTP/1.1 200 OK
[
{
‘id’: 10,
‘start’: ‘2015-10-22’,
‘topics’: [ ‘PHP’, ‘REST’ ],
‘speakers’: [
{
...
#1: Resources RPC!
POST /api/events/list
{ date: ‘2015-10-22’ }
----------------------------------------
HTTP/1.1 200 OK
[
{
‘id’: 10,
‘start’: ‘2015-10-22’,
‘topics’: [ ‘PHP’, ‘REST’ ],
‘speakers’: [
{
...
#2: Eu chamo API, tu chamas API...
✓ Comunicação sobre o HTTP
✓ URIs indicam o recurso desejado
✓ Recursos HTTP dividem os requests
✓ Verbos HTTP dividem as operações
#2: Eu chamo API, tu chamas API...
Subníveis de uso dos Verbos HTTP
GET POST PUT DELETE
Básico Consultas
Criação
Edição
Remoção
X X
#2: Eu chamo API, tu chamas API...
Subníveis de uso dos Verbos HTTP
GET POST PUT DELETE
Básico Consultas
Criação
Edição
Remoção
X X
Quase lá Consultas
Criação
Edição
X Remoção
#2: Eu chamo API, tu chamas API...
Subníveis de uso dos Verbos HTTP
GET POST PUT DELETE
Básico Consultas
Criação
Edição
Remoção
X X
Quase lá Consultas
Criação
Edição
X Remoção
RESTful-ish Consultas Criação Edição Remoção
#2: Eu chamo API, tu chamas API...
Subníveis de uso dos Verbos HTTP
GET POST PUT DELETE PATCH
Básico Consultas
Criação
Edição
Remoção
X X X
Quase lá Consultas
Criação
Edição
X Remoção X
RESTful-ish Consultas Criação Edição Remoção X
RESTful-ish
bônus
Consultas Criação Edição Remoção
Edição
parcial
#2: Eu chamo API, tu chamas API...
Subníveis de uso dos Verbos HTTP
GET POST PUT DELETE PATCH
Básico Consultas
Criação
Edição
Remoção
X X X
Quase lá Consultas
Criação
Edição
X Remoção X
RESTful-ish Consultas Criação Edição Remoção X
RESTful-ish
bônus
Consultas Criação Edição Remoção
Edição
parcial
RESTful-ish
bônus plus
Além dos verbos certos,
usa os códigos HTTP e headers corretos
#2: Eu chamo API, tu chamas API...
GET /api/events?date=2015-10-22
----------------------------------------
HTTP/1.1 200 OK
[
{
‘id’: 10,
‘start’: ‘2015-10-22’,
‘topics’: [ ‘PHP’, ‘REST’ ],
‘speakers’: [
{
...
#2: Eu chamo API, tu chamas API...
POST /api/events
{ ‘start’: ‘2015-10-22’, [...] }
----------------------------------------
HTTP/1.1 201 Created
[
{
‘id’: 10,
‘start’: ‘2015-10-22’,
‘topics’: [ ‘PHP’, ‘REST’ ],
‘speakers’: [
{
...
#2: Eu chamo API, tu chamas API...
DELETE /api/events/10
----------------------------------------
HTTP/1.1 204 No Content
#2.5: RESTful-ish
1. Códigos HTTP
- 200: OK, tá aqui o que você pediu
- 201: Criei, olha aqui o que eu fiz
- 204: Funcionou, mas não tenho mais nada pra te dizer
- 400: erro genérico do usuário
- 401: OW, quem é você?
- 403: OW, sei quem é você mas isso aqui não é pro teu bico
- 404: tem nada disso aqui não
- 405: verbo incorreto
- 406: não consigo gerar no formado que você quer
- 500: CORRÃO PARA AS MONTANHAS
- 501: não sei fazer isso não
- 503: deu treta com a API que eu uso (API, BD, etc)
#2.5: RESTful-ish
2. Stateful
- HTTP = stateless
- Stateless <> sessão
- API <3 sessão
- API + HTTP + sessão =
- HTTP Auth - autentica o usuário inicialmente
- HTTP Cookie - re-identifica o usuário, tornando desnecessário re-
autenticar a cada novo request
#2.5: RESTful-ish
3. Formatos de resposta
- Método A: header HTTP Accept: text/xml
- Método B: extensão na URI: /events.json
- O correto: aceitar os dois métodos, e responder em
XML e JSON
- O mais comum: um dos dois métodos, e responder em
JSON (mais leve de implementar e interpretar)
#2.5: RESTful-ish
4. Versionamento da API
- Método A: incluído na URL
- Método B: header HTTP customizado
- Método C: incluído no header Accept
- O correto: nenhum
- O mais comum: na URL - mais fácil de implementar dos
dois lados e associa diretamente o método, o resource e
a resposta à disponibilidade destes na API
#3: HATEOAS
Hypermedia
As
The
Engine
Of
Application
State
Comofas/
*altamente opinativo!
Library recomendada: Restler
Classes puras + ORM + Restler = API RESTful e documentada
Library recomendada: Restler
Classes puras + ORM + Restler = API RESTful e documentada
- Curva de aprendizado ≅ 0
- Muito leve; configuração flexível e customizável
- Features baseadas nas próprias features do OO e PHPDoc (assim
como o REST é baseado no HTTP, ahá!), como validação,
documentação, rotas customizadas, códigos de retorno, etc
- Suporta Rate limiting e OAuth 2
- Suporta respostas em JSON, XML, YAML, Plist e Amf
- Documentação automática e muito boa (Swagger)
Library recomendada: Restler
Classes puras + ORM + Restler = API RESTful e documentada
Documentação
Código
- Word
- User
Exemplo prático:
Framework recomendado: Laravel/Lumen
Resources automatizados em Controllers + framework
- Frameworks simplificados, e componentizados
- Bem leve
- Configuração flexível e customizável
- ORM poderoso já embutido
- Diversas outras ferramentas integradas, como queues, events,
logs, encriptação, validação, etc
- Já esbarrei em alguns bugs feiosos
Framework recomendado: Laravel/Lumen
Resources automatizados em Controllers + framework
Pattern não-recomendado: closures
Pattern recomendado para comprar seu ticket para o inferno
That’s all,
folks!
- Richardson’s API Maturity Model
- API versioning discussion
- HTTP Headers spec
- HTTP Verbs - Wikipedia
- HTTP Verbs - spec

Mais conteúdo relacionado

PDF
Rest fuuuu front-end
PDF
15 coisas sobre php para saber antes de morrer
PPSX
Como criar um domínio e hospedagem gratuitos
PDF
Shell Scipt - Comandos
PDF
Alterar password linux user pam autentication
PDF
Shell Script - Controle de fluxo
PDF
Linux shell
PDF
Conteudo curso php
Rest fuuuu front-end
15 coisas sobre php para saber antes de morrer
Como criar um domínio e hospedagem gratuitos
Shell Scipt - Comandos
Alterar password linux user pam autentication
Shell Script - Controle de fluxo
Linux shell
Conteudo curso php

Mais procurados (10)

PPTX
Metodologias de Programação IV - Aula 3, Secção 1 - Cabeçalhos do protocolo HTTP
PDF
Replicação e escalabidade do ZODB com RelStorage
PDF
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PDF
Alterar nome do_domínio–rendom_win-2008_e_2003
PPTX
Metodologias de Programação IV - Aula 3 - Secção 3 - Os códigos de estado do ...
PDF
Rodando PHP em um container Java
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
PDF
Hyper Text Transfer Protocol (HTTP)
PPTX
Metodologias de Programação IV - Aula 3, Secção 2 - Tipos MIME no protocolo HTTP
PPTX
Metodologias de Programação IV - Aula 2, Secção 2 - Sequência pedido-resposta...
Metodologias de Programação IV - Aula 3, Secção 1 - Cabeçalhos do protocolo HTTP
Replicação e escalabidade do ZODB com RelStorage
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
Alterar nome do_domínio–rendom_win-2008_e_2003
Metodologias de Programação IV - Aula 3 - Secção 3 - Os códigos de estado do ...
Rodando PHP em um container Java
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
Hyper Text Transfer Protocol (HTTP)
Metodologias de Programação IV - Aula 3, Secção 2 - Tipos MIME no protocolo HTTP
Metodologias de Programação IV - Aula 2, Secção 2 - Sequência pedido-resposta...
Anúncio

Destaque (18)

PDF
Considerações técnicas para atlas temáticos digitais e interfaces para dados ...
PPT
Psdc - 2014/01
ODP
Dados Abertos e Novas Formas de Governar
KEY
Nativo vs Híbrido vs WebApps
PDF
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
PDF
APIs Rest(Ful): como fazer, por Alex Piaz
PDF
Design de APIs RESTful Seguras e Escaláveis
PPTX
REST & RESTful APIs: The State of Confusion
ODP
Web APIs e dados abertos - API de Compras Governamentais
PPTX
REST: Padrões e Melhores Práticas
PDF
RESTful API - GDG Tech Talk - Novembro de 2014
PDF
Brainiak - uma API REST Hipermedia
PPTX
HATEOAS - Arquitetura REST 100% aderente
PDF
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
PDF
Hypermedia APIs and HATEOAS
PDF
Extraindo dados públicos “na marra”
PDF
APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]
PPTX
O Spring está morto! Viva o Spring!
Considerações técnicas para atlas temáticos digitais e interfaces para dados ...
Psdc - 2014/01
Dados Abertos e Novas Formas de Governar
Nativo vs Híbrido vs WebApps
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...
APIs Rest(Ful): como fazer, por Alex Piaz
Design de APIs RESTful Seguras e Escaláveis
REST & RESTful APIs: The State of Confusion
Web APIs e dados abertos - API de Compras Governamentais
REST: Padrões e Melhores Práticas
RESTful API - GDG Tech Talk - Novembro de 2014
Brainiak - uma API REST Hipermedia
HATEOAS - Arquitetura REST 100% aderente
Como um verdadeiro sistema REST funciona: arquitetura e performance na Abril
Hypermedia APIs and HATEOAS
Extraindo dados públicos “na marra”
APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]
O Spring está morto! Viva o Spring!
Anúncio

Semelhante a REST-fuuuu (20)

PDF
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
PPTX
Conhecendo o Novo REST Framework
PDF
REST Web Services com Java
PPTX
Rest
PPTX
Monitoramento de Aplicações Web Modernas com Zabbix
PPTX
Entendendo HTTP para entender o REST
PPTX
Entendendo HTTP para entender o REST
PDF
Rest web services com Java
PDF
Introdução APIs RESTful
PDF
Construindo APIs RESTful com Spring
KEY
PHP RESTful Web Services - PHPConf'09
PDF
Escalabilidade e performance da infraestrutura Plone/Zope com CacheFU e Varnish
PDF
REST com Python
PPTX
Introdução ao ASP .NET Web API
PDF
compreensão geral para estruturar uma api
PDF
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
PDF
PyData - Consumindo e publicando web APIs com Python
PDF
De Web Services RESTful a Aplicações Mashup
PPTX
Integrando sua App ao Mundo via REST/JSON
PDF
Aula-16-Semana-05-RESTFull-Services Aula.pdf
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
Conhecendo o Novo REST Framework
REST Web Services com Java
Rest
Monitoramento de Aplicações Web Modernas com Zabbix
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
Rest web services com Java
Introdução APIs RESTful
Construindo APIs RESTful com Spring
PHP RESTful Web Services - PHPConf'09
Escalabilidade e performance da infraestrutura Plone/Zope com CacheFU e Varnish
REST com Python
Introdução ao ASP .NET Web API
compreensão geral para estruturar uma api
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan Scafi
PyData - Consumindo e publicando web APIs com Python
De Web Services RESTful a Aplicações Mashup
Integrando sua App ao Mundo via REST/JSON
Aula-16-Semana-05-RESTFull-Services Aula.pdf

Último (17)

PPTX
Analise Estatica de Compiladores para criar uma nova LP
PDF
Banco de Dados 2atualização de Banco de d
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
Jira Software projetos completos com scrum
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PDF
Processamento da remessa no SAP ERP, SCM610 Col15
PPTX
Tipos de servidor em redes de computador.pptx
PPT
Aula de Engenharia de Software principais caracteristicas
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PDF
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
PPTX
ccursoammaiacursoammaiacursoammaia123456
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PDF
SEMINÁRIO DE IHC - A interface Homem-Máquina
PPTX
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx
Analise Estatica de Compiladores para criar uma nova LP
Banco de Dados 2atualização de Banco de d
Conceitos básicos de Redes Neurais Artificiais
Jira Software projetos completos com scrum
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
Processamento da remessa no SAP ERP, SCM610 Col15
Tipos de servidor em redes de computador.pptx
Aula de Engenharia de Software principais caracteristicas
Processos no SAP Extended Warehouse Management, EWM100 Col26
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Customizing básico em SAP Extended Warehouse Management, EWM110 Col26
ccursoammaiacursoammaiacursoammaia123456
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
SEMINÁRIO DE IHC - A interface Homem-Máquina
3b - Bradesco Lean Agile Training Plan - Ritos Operacionais (1).pptx

REST-fuuuu

  • 1. REST-fuuuu RESTful e a polícia do HTTP
  • 2. Igor Santos who? - Desenvolvedor PHP desde os 16 (~7 anos) - Já mexi com Ruby mas larguei essa vida - Já brinquei com C e Python mas… too much - Já mexi com JS e Titanium Mobile mas não dá sustento - Já me diverti com Ember mas… deixa pra lá - Já mexi com REST, tanto no servidor e cliente, e sempre que posso, volto pra área - Sempre no PHP, e esbarrando no JS
  • 5. RESTful……who? Martin Fowler & Leonard Richardson, 2010: Steps toward the glory of REST
  • 6. #0: O pântano do POX* ✓ Comunicação sobre o HTTP ✗ HTTP = protocolo facilitador de rede, somente ✗ Recursos? é de comer? RPC FTW ✗ Verbos HTTP? GETPOST all the things! *POX: Plain Old XML
  • 7. #0: O pântano do POX* *POX: Plain Old XML POST /api/ <listEvents date=”2015-10-22”/> ---------------------------------------- HTTP/1.1 200 OK <eventsList> <event id=”10”> <dates begin=”2015-10-22”> <topics> <topic>PHP</topic> <topic>REST</topic> </topics> [...]
  • 8. #0: O pântano do POJ-RPC* *POJ-RPC: Plain Old JSON over RPC POST /api/ { ‘method’: ‘listEvents’, date: ‘2015-10-22’ } ---------------------------------------- HTTP/1.1 200 OK [ { ‘id’: 10, ‘start’: ‘2015-10-22’, ‘topics’: [ ‘PHP’, ‘REST’ ], ‘speakers’: [ { ...
  • 9. #0: O pântano do POJ* *POJ: Plain Old JSON POST /api/?method=events.list { date: ‘2015-10-22’ } ---------------------------------------- HTTP/1.1 200 OK [ { ‘id’: 10, ‘start’: ‘2015-10-22’, ‘topics’: [ ‘PHP’, ‘REST’ ], ‘speakers’: [ { ...
  • 10. #1: Resources! ✓ Comunicação sobre o HTTP ✓ URIs indicam o recurso desejado ✓ Recursos HTTP simplificados, para dividir os requests ✗ Verbos HTTP? GETPOST all the things!
  • 11. #1: Resources RPC! POST /api/events { ‘method’: ‘list’, date: ‘2015-10-22’ } ---------------------------------------- HTTP/1.1 200 OK [ { ‘id’: 10, ‘start’: ‘2015-10-22’, ‘topics’: [ ‘PHP’, ‘REST’ ], ‘speakers’: [ { ...
  • 12. #1: Resources RPC! POST /api/events/list { date: ‘2015-10-22’ } ---------------------------------------- HTTP/1.1 200 OK [ { ‘id’: 10, ‘start’: ‘2015-10-22’, ‘topics’: [ ‘PHP’, ‘REST’ ], ‘speakers’: [ { ...
  • 13. #2: Eu chamo API, tu chamas API... ✓ Comunicação sobre o HTTP ✓ URIs indicam o recurso desejado ✓ Recursos HTTP dividem os requests ✓ Verbos HTTP dividem as operações
  • 14. #2: Eu chamo API, tu chamas API... Subníveis de uso dos Verbos HTTP GET POST PUT DELETE Básico Consultas Criação Edição Remoção X X
  • 15. #2: Eu chamo API, tu chamas API... Subníveis de uso dos Verbos HTTP GET POST PUT DELETE Básico Consultas Criação Edição Remoção X X Quase lá Consultas Criação Edição X Remoção
  • 16. #2: Eu chamo API, tu chamas API... Subníveis de uso dos Verbos HTTP GET POST PUT DELETE Básico Consultas Criação Edição Remoção X X Quase lá Consultas Criação Edição X Remoção RESTful-ish Consultas Criação Edição Remoção
  • 17. #2: Eu chamo API, tu chamas API... Subníveis de uso dos Verbos HTTP GET POST PUT DELETE PATCH Básico Consultas Criação Edição Remoção X X X Quase lá Consultas Criação Edição X Remoção X RESTful-ish Consultas Criação Edição Remoção X RESTful-ish bônus Consultas Criação Edição Remoção Edição parcial
  • 18. #2: Eu chamo API, tu chamas API... Subníveis de uso dos Verbos HTTP GET POST PUT DELETE PATCH Básico Consultas Criação Edição Remoção X X X Quase lá Consultas Criação Edição X Remoção X RESTful-ish Consultas Criação Edição Remoção X RESTful-ish bônus Consultas Criação Edição Remoção Edição parcial RESTful-ish bônus plus Além dos verbos certos, usa os códigos HTTP e headers corretos
  • 19. #2: Eu chamo API, tu chamas API... GET /api/events?date=2015-10-22 ---------------------------------------- HTTP/1.1 200 OK [ { ‘id’: 10, ‘start’: ‘2015-10-22’, ‘topics’: [ ‘PHP’, ‘REST’ ], ‘speakers’: [ { ...
  • 20. #2: Eu chamo API, tu chamas API... POST /api/events { ‘start’: ‘2015-10-22’, [...] } ---------------------------------------- HTTP/1.1 201 Created [ { ‘id’: 10, ‘start’: ‘2015-10-22’, ‘topics’: [ ‘PHP’, ‘REST’ ], ‘speakers’: [ { ...
  • 21. #2: Eu chamo API, tu chamas API... DELETE /api/events/10 ---------------------------------------- HTTP/1.1 204 No Content
  • 22. #2.5: RESTful-ish 1. Códigos HTTP - 200: OK, tá aqui o que você pediu - 201: Criei, olha aqui o que eu fiz - 204: Funcionou, mas não tenho mais nada pra te dizer - 400: erro genérico do usuário - 401: OW, quem é você? - 403: OW, sei quem é você mas isso aqui não é pro teu bico - 404: tem nada disso aqui não - 405: verbo incorreto - 406: não consigo gerar no formado que você quer - 500: CORRÃO PARA AS MONTANHAS - 501: não sei fazer isso não - 503: deu treta com a API que eu uso (API, BD, etc)
  • 23. #2.5: RESTful-ish 2. Stateful - HTTP = stateless - Stateless <> sessão - API <3 sessão - API + HTTP + sessão = - HTTP Auth - autentica o usuário inicialmente - HTTP Cookie - re-identifica o usuário, tornando desnecessário re- autenticar a cada novo request
  • 24. #2.5: RESTful-ish 3. Formatos de resposta - Método A: header HTTP Accept: text/xml - Método B: extensão na URI: /events.json - O correto: aceitar os dois métodos, e responder em XML e JSON - O mais comum: um dos dois métodos, e responder em JSON (mais leve de implementar e interpretar)
  • 25. #2.5: RESTful-ish 4. Versionamento da API - Método A: incluído na URL - Método B: header HTTP customizado - Método C: incluído no header Accept - O correto: nenhum - O mais comum: na URL - mais fácil de implementar dos dois lados e associa diretamente o método, o resource e a resposta à disponibilidade destes na API
  • 28. Library recomendada: Restler Classes puras + ORM + Restler = API RESTful e documentada
  • 29. Library recomendada: Restler Classes puras + ORM + Restler = API RESTful e documentada - Curva de aprendizado ≅ 0 - Muito leve; configuração flexível e customizável - Features baseadas nas próprias features do OO e PHPDoc (assim como o REST é baseado no HTTP, ahá!), como validação, documentação, rotas customizadas, códigos de retorno, etc - Suporta Rate limiting e OAuth 2 - Suporta respostas em JSON, XML, YAML, Plist e Amf - Documentação automática e muito boa (Swagger)
  • 30. Library recomendada: Restler Classes puras + ORM + Restler = API RESTful e documentada Documentação Código - Word - User Exemplo prático:
  • 31. Framework recomendado: Laravel/Lumen Resources automatizados em Controllers + framework - Frameworks simplificados, e componentizados - Bem leve - Configuração flexível e customizável - ORM poderoso já embutido - Diversas outras ferramentas integradas, como queues, events, logs, encriptação, validação, etc - Já esbarrei em alguns bugs feiosos
  • 32. Framework recomendado: Laravel/Lumen Resources automatizados em Controllers + framework
  • 33. Pattern não-recomendado: closures Pattern recomendado para comprar seu ticket para o inferno
  • 34. That’s all, folks! - Richardson’s API Maturity Model - API versioning discussion - HTTP Headers spec - HTTP Verbs - Wikipedia - HTTP Verbs - spec