O documento discute os princípios do REST e como implementá-lo corretamente usando HTTP. Primeiro, descreve vários estágios de maturidade de APIs, desde o uso inadequado de XML/JSON e verbos HTTP até a implementação completa do REST. Em seguida, explica como usar corretamente recursos, verbos HTTP, códigos de status e demais princípios do REST. Por fim, recomenda ferramentas como Restler e Laravel para desenvolver APIs RESTful de forma fácil e robusta.
Uma versão um pouco mais leve e sem referências a tecnologias de backend, apresentando para a galera de frontend os principais conceitos de APIs RESTful e algumas ferramentas úteis para o dia-a-dia.
Para ver os slides com comentários descritivos, acesse: https://docs.google.com/presentation/d/1fcvYVSXVsgGsnjTJZHBxVig8d0iVOENcuPvfkfnuG4M/edit?usp=sharing
Uma versão um pouco mais leve e sem referências a tecnologias de backend, apresentando para a galera de frontend os principais conceitos de APIs RESTful e algumas ferramentas úteis para o dia-a-dia.
Para ver os slides com comentários descritivos, acesse: https://docs.google.com/presentation/d/1fcvYVSXVsgGsnjTJZHBxVig8d0iVOENcuPvfkfnuG4M/edit?usp=sharing
Replicação e escalabidade do ZODB com RelStorageRuda Filgueiras
O CMS Plone utiliza o ZODB como usa base de dados principal. Em alguns cenários, como grandes portais, é preciso ter muitos servidores ZOPE no frontend processando as requisições dos usuários.
Nessas situações, o ZEO, backend distribuído padrão do ZODB, pode ficar sobrecarregado, principalmente pela quantidade de IO requisitada e em alguns casos de CPU também.
Como alternativa ao ZEO, foi desenvolvido um novo backend para o ZODB que armazena os dados dos objetos (raw) em banco de dados relacionais, com alguns objetivos:
facilitar o uso de múltiplas CPUs no processamento do backend
utilizar ferramentas de backup e replicação já conhecidas dos administradores de banco de dados
fazer backup on-lin dos dados do servidor com a utilização de réplicas escravas
fazer um balanceamento das requisições ao backend utilizando-se de clusters
Além disso, o RelStorage também inovou na integração com memcached para centralizar o cache do objetos e aliviar ainda mais o IO do backend ZODB.
O objetivo desta apresentação é falar sobre o projeto RelStorage, utilizando-se de exemplos de práticos de utilização dele em aplicação Zope/Plone e sua integração com memcached e realizando um espelhamento da base de dados.
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
Desenvolver uma aplicação em PHP com PostgreSQL é uma combinação interessante, pois permite criar apps web escaláveis e de alta performance, bem como serviços, jobs, etc. Mas na maioria das vezes o uso fica limitado a conectar, executar um SQL e desconectar do banco de dados. Porém a extensão PostgreSQL para PHP implementa uma série de recursos interessantes: queries assincronas, notificação assincrona, bulk load, BLOBs, cursores, consultas preparadas, etc. Veremos um pouco desses recursos. Palestra apresentada na PHP Conference 2017 em Osasco/SP
Este foi o Desafio dos 15 minutos no II Encontro do PHP-PB concorrendo ao elePHPant e que, mesmo na pressa de fazê-lo rapidamente, levou o grande prêmio para casa.
Dados Abertos e Novas Formas de Governarnitaibezerra
Slides apresentados no V EATI - Encontro Anual de Tecnologia da Informação realizado em Frederico Westphalen - RS. Apresenta dados abertos como pilar central de um governo aberto. Traz uma visão da cultura Hacker de como os governos podem ser melhores.
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Luis Cipriani
A palestra irá apresentar os desafios e as lições aprendidas em 3 anos de desenvolvimento de uma plataforma para gerência e publicação de conteúdo digital na Abril Mídia que aplica os conceitos de arquiteturas REST e APIs Hipermídia para conseguir entregar um grande volume de informação em diversos tipos de dispositivos. A plataforma é constituída de inúmeros domínios de informação, modulares e independentes, que se integram para permitir a criação de produtos digitais de forma mais ágil. Atualmente a plataforma suporta 14 sites e mais de 12 milhões de pageviews/mês e possui uma arquitetura poliglota, ou seja, com uma grande variedade de linguagens e tecnologias utilizadas.
Alex Piaz, Web Analyst do Instituto Socioambiental, falou sobre 'APIs Rest(Ful): como fazer' no iMasters PHP Experience 2015.
O iMasters PHP Experience 2015 aconteceu dia 25 de Abril de 2015, no Hotel Renaissance em São Paulo-SP - http://phpexperience.imasters.com.br/
Design de APIs RESTful Seguras e EscaláveisKleber Bacili
Apresentação realizada no evento Developerweek em Vitória/ES.
Impulsionadas pelas estratégias digitais em mobilidade, cloud, mídias sociais e internet das coisas, as APIs estão realmente entrando no dia-a-dia das equipes de desenvolvimento, seja de startups, começando a desenvolver seus produtos, seja de grandes empresas, que carregam um grande legado de sistemas e investimentos já realizados em middlewares de integração.
Aliado a isso, 2014 foi o ano em que a segurança digital ficou com as luzes vermelhas acesas devido a ataques, vazamentos e vulnerabilidades descobertas.
Diversas razões que podem levar uma empresa a expor APIs. Mas seja qual for a sua, alguns cuidados são imprescindíveis para que dados sensíveis não vazem ou sistemas críticos não sejam derrubados.
Apresentação realizada em 05/12/2012 no JavaOneBrasil, com o Felipe Firmo pela Sensedia.
O objetivo dessa palestra foi apresentar o trabalho em andamento sobre o tema REST para a publicação de APIs por clientes de grande porte.
RESTful API - GDG Tech Talk - Novembro de 2014Marlon Carvalho
O desenvolvimento de sistemas monolíticos é passado. No mundo atual, onde os dispositivos móveis estão dominando, não faz mais sentido desenvolver um sistema fechado, que não pode se comunicar e prover dados para dispositivos móveis através de APIs. E, quando o assunto é API, há um monte de confusão. Muitos dizem que sua API é REST. Mas, será que é mesmo? Uma análise superficial em muitas APIs disponibilizadas pela Internet demonstra que não é bem assim. O objetivo desta palestra é demonstrar as ideias por trás do termo RESTful e como elas se aplicam no desenvolvimento de APIs.
Replicação e escalabidade do ZODB com RelStorageRuda Filgueiras
O CMS Plone utiliza o ZODB como usa base de dados principal. Em alguns cenários, como grandes portais, é preciso ter muitos servidores ZOPE no frontend processando as requisições dos usuários.
Nessas situações, o ZEO, backend distribuído padrão do ZODB, pode ficar sobrecarregado, principalmente pela quantidade de IO requisitada e em alguns casos de CPU também.
Como alternativa ao ZEO, foi desenvolvido um novo backend para o ZODB que armazena os dados dos objetos (raw) em banco de dados relacionais, com alguns objetivos:
facilitar o uso de múltiplas CPUs no processamento do backend
utilizar ferramentas de backup e replicação já conhecidas dos administradores de banco de dados
fazer backup on-lin dos dados do servidor com a utilização de réplicas escravas
fazer um balanceamento das requisições ao backend utilizando-se de clusters
Além disso, o RelStorage também inovou na integração com memcached para centralizar o cache do objetos e aliviar ainda mais o IO do backend ZODB.
O objetivo desta apresentação é falar sobre o projeto RelStorage, utilizando-se de exemplos de práticos de utilização dele em aplicação Zope/Plone e sua integração com memcached e realizando um espelhamento da base de dados.
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
Desenvolver uma aplicação em PHP com PostgreSQL é uma combinação interessante, pois permite criar apps web escaláveis e de alta performance, bem como serviços, jobs, etc. Mas na maioria das vezes o uso fica limitado a conectar, executar um SQL e desconectar do banco de dados. Porém a extensão PostgreSQL para PHP implementa uma série de recursos interessantes: queries assincronas, notificação assincrona, bulk load, BLOBs, cursores, consultas preparadas, etc. Veremos um pouco desses recursos. Palestra apresentada na PHP Conference 2017 em Osasco/SP
Este foi o Desafio dos 15 minutos no II Encontro do PHP-PB concorrendo ao elePHPant e que, mesmo na pressa de fazê-lo rapidamente, levou o grande prêmio para casa.
Dados Abertos e Novas Formas de Governarnitaibezerra
Slides apresentados no V EATI - Encontro Anual de Tecnologia da Informação realizado em Frederico Westphalen - RS. Apresenta dados abertos como pilar central de um governo aberto. Traz uma visão da cultura Hacker de como os governos podem ser melhores.
Alexandria: um Sistema de Sistemas para Publicação de Conteúdo Digital utiliz...Luis Cipriani
A palestra irá apresentar os desafios e as lições aprendidas em 3 anos de desenvolvimento de uma plataforma para gerência e publicação de conteúdo digital na Abril Mídia que aplica os conceitos de arquiteturas REST e APIs Hipermídia para conseguir entregar um grande volume de informação em diversos tipos de dispositivos. A plataforma é constituída de inúmeros domínios de informação, modulares e independentes, que se integram para permitir a criação de produtos digitais de forma mais ágil. Atualmente a plataforma suporta 14 sites e mais de 12 milhões de pageviews/mês e possui uma arquitetura poliglota, ou seja, com uma grande variedade de linguagens e tecnologias utilizadas.
Alex Piaz, Web Analyst do Instituto Socioambiental, falou sobre 'APIs Rest(Ful): como fazer' no iMasters PHP Experience 2015.
O iMasters PHP Experience 2015 aconteceu dia 25 de Abril de 2015, no Hotel Renaissance em São Paulo-SP - http://phpexperience.imasters.com.br/
Design de APIs RESTful Seguras e EscaláveisKleber Bacili
Apresentação realizada no evento Developerweek em Vitória/ES.
Impulsionadas pelas estratégias digitais em mobilidade, cloud, mídias sociais e internet das coisas, as APIs estão realmente entrando no dia-a-dia das equipes de desenvolvimento, seja de startups, começando a desenvolver seus produtos, seja de grandes empresas, que carregam um grande legado de sistemas e investimentos já realizados em middlewares de integração.
Aliado a isso, 2014 foi o ano em que a segurança digital ficou com as luzes vermelhas acesas devido a ataques, vazamentos e vulnerabilidades descobertas.
Diversas razões que podem levar uma empresa a expor APIs. Mas seja qual for a sua, alguns cuidados são imprescindíveis para que dados sensíveis não vazem ou sistemas críticos não sejam derrubados.
Apresentação realizada em 05/12/2012 no JavaOneBrasil, com o Felipe Firmo pela Sensedia.
O objetivo dessa palestra foi apresentar o trabalho em andamento sobre o tema REST para a publicação de APIs por clientes de grande porte.
RESTful API - GDG Tech Talk - Novembro de 2014Marlon Carvalho
O desenvolvimento de sistemas monolíticos é passado. No mundo atual, onde os dispositivos móveis estão dominando, não faz mais sentido desenvolver um sistema fechado, que não pode se comunicar e prover dados para dispositivos móveis através de APIs. E, quando o assunto é API, há um monte de confusão. Muitos dizem que sua API é REST. Mas, será que é mesmo? Uma análise superficial em muitas APIs disponibilizadas pela Internet demonstra que não é bem assim. O objetivo desta palestra é demonstrar as ideias por trás do termo RESTful e como elas se aplicam no desenvolvimento de APIs.
Como um verdadeiro sistema REST funciona: arquitetura e performance na AbrilLuis Cipriani
A palestra irá compartilhar a experiência e lições aprendidas no desenvolvimento da plataforma de publicação da Abril, um sistema distribuído com vários nós independentes que se comunicam usando REST e hypermidia. Também introduziremos alguns conceitos avançados de HTTP que podem fazer com que sistemas REST executem com melhor performance, evitando os problemas comuns de se manter uma plataforma em larga escala, com uma grande diversidade de usuários.
APIs: o que são? onde vivem? do que se alimentam? [PyNE2016]Filipe Ximenes
APIs vem se tornando um tema cada vez mais popular nos últimos anos. Isso de deu por diversos fatores como a popularização dos smartphones, dos frameworks de “Aplicação de página única” (SPA - Single page application) e a popularização do SaaS (Software as a service). Mas devido a quantidade de coisas que envolvem o desenvolvimento de aplicações web, esse costuma ser um tema um pouco obscuro para quem tem pouco tempo na área.
Nessa palestra, vamos tentar responder algumas perguntas como: O que são APIs? Como elas funcionam? Quais são as diferenças entra uma aplicação web convencional e uma feita com APIs? O que é esse tal REST?
Uma palestra de boas práticas para APIs RESTful, apresentando os principais conceitos e sugerindo algumas ferramentas para o desenvolvimento e úteis no dia-a-dia.
Para ver os slides comentados, acesse https://docs.google.com/presentation/d/1ouKB72zKIu0IxSbk58-h0JxjD_tESW76lmFgMzF7OJo/edit?usp=sharing
Monitoramento de Aplicações Web Modernas com ZabbixAndré Déo
Demonstrar que com os recursos nativos da ferramenta, atrelados à desenvolvedores integrados com a equipe de operações (DevOps) é possível monitorar aplicações web modernas, que utilizam recursos como APIs, REST e JSON.
Quando começamos a lidar com REST tudo parece meio mágico e ao mesmo tempo pesado.
Neste vídeo apresentamos alguns conceitos iniciais dos padrões REST sob a perspectiva do protocolo HTTP.
Quando começamos a lidar com REST tudo parece meio mágico e ao mesmo tempo pesado.
Neste vídeo apresentamos alguns conceitos iniciais dos padrões REST sob a perspectiva do protocolo HTTP.
Introdução ao conceito de APIs RESTful. Características, boas práticas e o que é importante se levar em consideração durante o desenvolvimento de uma API RESTful.
Aborda utilização de verbos HTTP, códigos de status, headers, controles de hipermídia, formatos de representação entre outros.
A stack Spring ganhou bastante popularidade por causa do seu modelo de programação intuitivo, baseado em anotações e em assinaturas de métodos bem flexíveis. Nesta palestra vamos entender como usar os verbos HTTP e a stack do Spring para construir APIs RESTfu
PyData - Consumindo e publicando web APIs com PythonBruno Rocha
Apresentado no auditório da NuBank em São Paulo dia 28 de Março de 2017 - PyData Meetup.
- O que são Web APIs
- Consumindo web APIs com Python
- O que fazer com os dados?
- Publicando web APIs com Python.
http://github.com/rochacbruno/flasgger
Segunda palestra da PHP Conference Brasil, falando sobre webservices, uma visão geral para quem quer começar a usar e métodos e estratégias para quem já os adota
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
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!
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
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)
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