O documento discute o desenvolvimento de APIs RESTful com Java. Aborda os principais conceitos de REST e como implementá-los usando JAX-RS, incluindo anotações para mapear URLs, verbos HTTP e formatos de dados. Também fornece um exemplo prático de CRUD de celulares usando essa abordagem.
Uma apresentação que mostra a nova API gáfica da plataforma Java: JavaFX.
É mostrado código para criação de aplicações JavaFX e uma aplicação inusitada usando essa tecnologia.
A palestra abordará como foi criado o CartolaFC, a escolha da sua arquitetura, como foi o processo de desenvolvimento, e o dia a dia de trabalho na globo.com.
Conectando jBPM com o mundo - TDC 2014 SPjesuinoPower
Apresentação para o TDC 2014 de São Paulo sobre a API REST do jBPM, ou BPMS (produto da Red Hat) e demonstração de uma aplicação em JavaFX que acessa essa API.
Uma apresentação que mostra a nova API gáfica da plataforma Java: JavaFX.
É mostrado código para criação de aplicações JavaFX e uma aplicação inusitada usando essa tecnologia.
A palestra abordará como foi criado o CartolaFC, a escolha da sua arquitetura, como foi o processo de desenvolvimento, e o dia a dia de trabalho na globo.com.
Conectando jBPM com o mundo - TDC 2014 SPjesuinoPower
Apresentação para o TDC 2014 de São Paulo sobre a API REST do jBPM, ou BPMS (produto da Red Hat) e demonstração de uma aplicação em JavaFX que acessa essa API.
Confira os slides do Workshoo Hands-On do APIX 2018 realizado pela Sensedia. Nessa atividade, foram abordados todos os temas envolvendo uma aplicação para detecção de fraudes em tempo real, com a utilização de APIs das ELO.
Python Eve - APIs RESTful Profissionais em poucas linhasRuda Filgueiras
Desenvolvimento de APIs REST com framework EVE (http://python-eve.org/).
Esse framework utiliza o conceito de declaração de modelos de domínio que podem inclusive ser um Model SQLAlchemy (usando a extensão Eve-SQLAlchemy), para entregar automaticamente uma API REST CRUD completa e repleta de funcionalidades prontas com as melhores práticas.
Além disso é possível customizar a API globalmente ou por recursos a ser exposto, como por exemplo não ter autorização para as consultas GET ou ter uma classe de autorização por recursos, hooks de request, hooks de acesso a dados, etc.
A minha intenção é apresentar os recursos mais relevantes desse framework muito maduro para REST que possui uma abordagem muito interessante, incluindo integração nativa com MongoDB.
Uma apresentação sobre o protocolo que fornece a base do desenvolvimento sobre a web, suas vantagens, características e más práticas que podem ser evitadas.
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?
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.
Otimizando a integração de Sistemas
No dia 27/04/2017 foi realizado na FIAP – Unidade Aclimação o Workshop do Bem onde falamos sobre o mundo das APIs – otimizando a integração de sistemas.
Abordamos no evento sobre a importância para conquistar clientes e mantê-los engajados com o seu conteúdo e como conseguir entregar o que ele espera, no momento que ele quer e como surpreendê-lo podendo, para isso, ser utilizado um computador, um tablet, um smartphone ou quem sabe até uma coisa (IoT). Apresentamos como as APIs facilitam a integração entre sistemas e parceiros, favorecendo todo o ecossistema em volta de sua marca.
Confira os slides apresentados.
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
No dia 27/04/2017 foi realizado na FIAP - Unidade Aclimação o Workshop do Bem onde falamos sobre o mundo das APIs - otimizando a integração de sistemas.
Abordamos no evento sobre a importância para conquistar clientes e mantê-los engajados com o seu conteúdo e como conseguir entregar o que ele espera, no momento que ele quer e como surpreendê-lo podendo, para isso, ser utilizado um computador, um tablet, um smartphone ou quem sabe até uma coisa (IoT). Apresentamos como as APIs facilitam a integração entre sistemas e parceiros, favorecendo todo o ecossistema em volta de sua marca.
Confira abaixo os slides apresentados.
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
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
2. Sobre
● Programação ABAP
● BI com a ferramenta Business Objects
● Suporte ferramentas JBoss
● Paralelamente:
○ S2 programação, principalmente Java
○ JavaFX
○ Comunidades e fóruns
○ Projetos Open Source
● Com WEB Services RESTful:
○ TCC
○ APIs RESTful
○ RESTEasy
● Na WEB:
○ @william_antonio
○ http://williamantonio.wordpress.com
3. Web Services
● Tecnologia para integração de sistemas
● Independência de plataforma
● Utiliza padrões abertos
● Rock star em sistemas atuais
● Baixo acoplamento entre quem consome e quem produz
● WS-* e SOAP
○ Uma URL, um método HTTP, um formato
○ Muito código gerado (eca!)
○ HTTP é *desprezado*
○ Soluções dadas por grandes empresas com um "toque
especial" = Estaca zero de novo!
○ Complexo?
○ Imensa discussão SOAP/WS X REST: http://bit.
ly/s0Gofp
5. REST
● A WEB é um sucesso!
● REST? Tese de Roy Fielding
● "The idea of REST is essentially a reverse-engineering of how the Web
works" - Java SOA Cookbook
● Um estilo arquitetural com os seguintes princípios
○ Foco em recursos
○ Identificação única de cada recurso
○ Interface uniforme
○ Stateless
○ Múltiplas representações de um mesmo recurso
● Vantagens:
○ Escalabilidade
○ Simplicidade
○ Representa sua aplicação através de recursos ao invés de
métodos não explicados (vantagem?)
6. REST com HTTP
● HTTP é perfeito para aplicarmos os princípios REST:
○ Identificação através de URIs
○ Interface uniforme:
■ Verbos HTTP: GET, POST, PUT, DELETE...
■ Códigos informativos: 404, 201, 500 e outras dezenas...
● Simples e praticamente acessível de qualquer linguagem de
programação
● HTTP é maduro e consolidado
● Simples:
○ No cabeçalho da requisição informações como formatos de
dados, codificação, linguagem, entre outras
○ No corpo da requisição a representação do recurso
● Autenticação, encriptação, autorização: Use o que o HTTP
oferece
8. RESTful WEB Services
● Web Services que seguem os princípios REST
● Restful Web Services é o livro!
● Algo a acrescentar:
○ GET sempre seguro
○ GET, PUT, DELETE idempotentes, POST não
○ Transações com REST
○ Como criar REST WS com Java, Ruby, Python
● ROA - Resource Oriented Architeture
● Comunidade em ação
○ Críticas a muitos WEB Services e APIs existente. São
realmente REST?
○ HATEOAS - Ligar os recursos através de URIs para
implementar o sistema. O cliente usa as URIs para a próxima
iteração com o servidor
9. Na prática
● Recurso Cachorro
○ GET /cachorro/{id} Recupera
○ DELETE /cachorro/{id} Apaga
○ POST /cachorro Cria
○ GET /cachorro Recupera todos
● Formatos: XML e JSON
● Códigos HTTP
○ 404 - Não encontrado
○ 500 - Erro desconhecido no servidor
○ 201 - Criado
10. RESTful WEB Services com Java
● Usar Servlets? Usar frameworks de terceiros não
padronizados? Nada disso!!
● JAX-RS
● Foco em POJOs e anotações
● JSR 311 e JSR 339 (a caminho)
● Aplicações JAX-RS podem rodar em um simples
servlet contêiner
● Acreditem em mim, programar em Java é prazeroso de
novo!
● Você não faz parse de XML nem JSON, nem de nenhum
outro formato famoso
● Você só anota e programa sua lógica de negócio
● O livro da vez é RESTful Java with JAX-RS.
11. A maneira JAX-RS de programar
● Anote suas classes e métodos com @Path para dizer qual
URI seus métodos representam
● Use @GET, @POST, @DELETE, @PUT para dizer qual o
método HTTP
● Use @Produces para determinar os formatos de dados que
serão produzidos
● JAX-RS usara os métodos acima para determinar qual
método será chamado de acordo com a requisição HTTP
● Pode usar uma interface para representar seus recursos
● Use "templates" em Paths para injetar parâmetros que
estão na URI através das anotações @PathParam e
@QueryParam
12. Exemplo
● recuperaFoo responde a GET em
/foo/{id}, onde id é um número (
responde a /foo/666, mas não a
/foo/abc)
● criaFoo responde a POST em /foo
● apagaFoo responde a DELETE em
/foo
● atualizaFoo responde a PUT em /foo
cujo corpo da requisição contenha uma
representação de Foo
● O método chamado é baseado nas
informações da requisição HTTP
13. ● Implementação de JAX-RS
● Oferece mais que a especificação
● É um projeto JBoss
● Open Source
● Características extra JAX-RS:
○ Interceptores
○ API Cliente
○ Suporte a muitos formatos
○ Ligação de recursos
○ API JavaScript
○ Integração com Spring, EJB, CDI, outros
○ Suporte a testes e contêiner integrado para testes
○ Mais...
14. Uma API que usa RESTful WS
● WEB Services REST para ler informações dos nossos
candidatos
● Falha em alguns princípios REST :(
● Dados só em XML
● Implementado com Jersey
● Segunda versão a caminho
● Publicada no ProgrammableWEB :O
○ http://www.programmableweb.com/api/brazilian-election-
candidates
● Código aberto :)
○ https://bitbucket.org/williamAntonio/elei-es-abertas
● Demonstração "ao vivo" :)
○ http://williamprogrammer.com/EleicoesAbertas/
15. Mais APIs que usam JAX-RS
● Consumir APIs É TDB
○ Twitter
○ Facebook
○ APIs do Google
● Exemplo de um cliente simples do Last FM usando
RESTEasy:
○ http://javafree.uol.com.br/artigo/882228/Um-simples-
cliente-da-API-do-LastFM-com-RESTEasy.html
● Entre no ProgrammableWeb.com e seja feliz. Vamos
entrar?
○ http://www.programmableweb.com/apis/directory/1?
protocol=REST
16. Programar!
● Vamos fazer um CRUD de um sistema fictício de celulares
● Nosso cliente já tem a base e o acesso a base de dados
prontos, agora quer uma API RESTful
● Nossas URIs:
Método URI Formato Faz o que?
GET /celular XML e JSON recupera todos celulares
GET /celular/{id} XML e JSON recupera um celular de acordo
com o ID
DELETE /celular/{id} XML e JSON apaga celular de acordo com ID
POST /celular XML e JSON cria novo celular
Sem código aqui, vamos para a IDE!
17. Além da apresentação
● Livros:
○ RESTful Web Services
○ RESTful Java with JAX-RS
○ REST In Practice*
● WEB
○ Tese do Roy Fielding
■ http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
○ JAX-RS
■ http://jcp.org/en/jsr/detail?id=311
■ http://jcp.org/en/jsr/detail?id=339
■ http://www.jboss.org/resteasy
○ Blogs
■ http://blog.steveklabnik.com/2011/07/03/nobody-
understands-rest-or-http.html
■ http://timelessrepo.com/haters-gonna-hateoas
■ http://martinfowler.com/articles/richardsonMaturityModel.
html