SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Desenvolvimento de API's REST com
Spring Boot
Wesley Fuchter
Agenda
- Protocolo HTTP
- Arquitetura REST
- Servidores de Aplicação X Embedded Java Container
- Spring Framework (Boot, Web, Data, Security, Cloud…)
- Aplicação exemplo
- Prática:
- Ambiente e Ferramentas
- Dependências
- Spring Initializr
- CRUD Genérico
HTTP
HTTP - Hypertext Transfer Protocol
- Protocolo para comunicação de sistemas distribuídos
- Versão 1.1
- Definida pela RFC 2616, em 06/1999
- Interface de comunicação universal: Texto
Arquitetura Client-Server
Adaptado de: Leonardo Zanivan
HTTP Verb
Adaptado de: Leonardo Zanivan
HTTP Status
Adaptado de: Leonardo Zanivan
HTTP Media Type
Media Type Extensão do conteúdo Normalmente usado para
text/css .css Estilos para páginas web
application/javascript .js Lógica para páginas web
text/html .html Estrutura para páginas web
application/json .json Transmissão de dados
https://www.iana.org/assignments/media-types/media-types.xhtml
URL
Adaptado de: Leonardo Zanivan
Request
Adaptado de: Leonardo Zanivan
Response
Adaptado de: Leonardo Zanivan
REST
Arquitetura REST
- Abstração para o HTTP
- REST - Representational State Transfer
- Estilo arquitetural para transferência de estado entre aplicações distribuídas
- Stateless
- Cacheable
- Baseado em recursos
- Recursos são definidos através de uma URI - Uniform Resource Identifier
- Aplicações que aplicam REST, são denominadas RESTful
Fluxo
Protocolo TCP/IP no
OS
Process ID X Porta JVM Thread X Porta
JVM Thread X Porta
Java Web Server
(Spring Boot)
Java Servlet API
Spring Controller Your App Controller
API - Application Programming Interface
Spring & Spring Boot
Servidores de Aplicação X Embedded Java Container
- Servidores de aplicação tradicionais
- Redhat Wildfly / Jboss
- Oracle Glassfish
- Apache Tom EE
- Problemas
- Alto acoplamento
- Peso (Consumo de recursos computacionais)
- “Uma bazuca para matar uma mosca!”
- Difícil configuração / manutenção / evolução
- Deployable Jar (Fat jar)
- Pequenas responsabilidades
- Microservices
- O retorno do bom e velho Main Method!
- java -jar meu-fatjar.jar
Spring Boot e Ecossistema Spring
- Convenção sobre a configuração
- Spring Web
- Spring Data
- Spring Security
- Especificações Java EE (JPA, JAX-RS, JAX-WS...)
- Runnable & Deployable JAR
Ambiente de desenvolvimento
- Acesso a internet
- IDE
- Netbeans
- Eclipse
- Spring Tool Suite
- Intellij IDEA
- Maven
- Postman (Google Chrome)
Spring Initializr start.spring.io
- Dependências
- Spring Web
- JDBC
- Spring JPA
- H2 - Banco de Dados em memória
- Dados do projeto
- Maven / Gradle
- Packaging Jar
- Version 1.8
Show me the code!
Obrigado!
Github: https://github.com/wesleyfuchter/unibave-senpex-2017
Referências:
PIRES, Jackson. O que é API? REST e RESTful? Conheça as definições e diferenças!, 2017, Disponível em:
<https://becode.com.br/o-que-e-api-rest-e-restful/>. Acesso em: 22 set. 2017.
SAUDATE, Alexandre. REST, Construa API’s inteligentes de maneira simples. São Paulo: Casa do Código, 2015. 315p.
Acervo: Leonardo Zanivan

Mais conteúdo relacionado

Mais procurados

Quando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucessoQuando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucessoIvan Rosolen
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Felipe Blini
 
Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37Wilson Lopes
 
Hospedagem Web Linux em Ambiente Virtualizado Hyper-V
Hospedagem Web Linux em Ambiente Virtualizado Hyper-VHospedagem Web Linux em Ambiente Virtualizado Hyper-V
Hospedagem Web Linux em Ambiente Virtualizado Hyper-VRodrigo Felipe Betussi
 
Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)Afonso Brandão
 
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Thiago Barradas
 

Mais procurados (13)

Javaone2010
Javaone2010Javaone2010
Javaone2010
 
FISL11 2010 - Automação de Datacenters
FISL11 2010 - Automação de DatacentersFISL11 2010 - Automação de Datacenters
FISL11 2010 - Automação de Datacenters
 
Quando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucessoQuando o planejamento da infraestrutura leva ao sucesso
Quando o planejamento da infraestrutura leva ao sucesso
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
PHP FrameWARks - CakePHP
PHP FrameWARks - CakePHPPHP FrameWARks - CakePHP
PHP FrameWARks - CakePHP
 
Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37Ferramentas para Automação de Datacenter - GTER 37
Ferramentas para Automação de Datacenter - GTER 37
 
Hospedagem Web Linux em Ambiente Virtualizado Hyper-V
Hospedagem Web Linux em Ambiente Virtualizado Hyper-VHospedagem Web Linux em Ambiente Virtualizado Hyper-V
Hospedagem Web Linux em Ambiente Virtualizado Hyper-V
 
Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
Web Services
Web ServicesWeb Services
Web Services
 
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
 
Jaas apresentado
Jaas apresentadoJaas apresentado
Jaas apresentado
 

Semelhante a Desenvolvimento de API REST com Spring Boot

Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a WebLuiz Cláudio Silva
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupWagner Roberto dos Santos
 
SAPO Broker
SAPO BrokerSAPO Broker
SAPO Brokercodebits
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application ServerFabricio Carvalho
 
Java Platform, Enterprise Edition
Java Platform, Enterprise EditionJava Platform, Enterprise Edition
Java Platform, Enterprise EditionDaniel Arndt Alves
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPManoel Afonso
 
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )João Moura
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireportfpsgyn
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 

Semelhante a Desenvolvimento de API REST com Spring Boot (20)

Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a Web
 
apache+ssl+Jserv
apache+ssl+Jservapache+ssl+Jserv
apache+ssl+Jserv
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Slides da palestra no Flex mania 2011
Slides da palestra no Flex mania 2011Slides da palestra no Flex mania 2011
Slides da palestra no Flex mania 2011
 
SAPO Broker
SAPO BrokerSAPO Broker
SAPO Broker
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
 
Java Platform, Enterprise Edition
Java Platform, Enterprise EditionJava Platform, Enterprise Edition
Java Platform, Enterprise Edition
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSP
 
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireport
 
GUJavaSC - Java EE 7 In Action
GUJavaSC - Java EE 7 In ActionGUJavaSC - Java EE 7 In Action
GUJavaSC - Java EE 7 In Action
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Maverick v1.0
Maverick v1.0Maverick v1.0
Maverick v1.0
 

Desenvolvimento de API REST com Spring Boot

  • 1. Desenvolvimento de API's REST com Spring Boot Wesley Fuchter
  • 2. Agenda - Protocolo HTTP - Arquitetura REST - Servidores de Aplicação X Embedded Java Container - Spring Framework (Boot, Web, Data, Security, Cloud…) - Aplicação exemplo - Prática: - Ambiente e Ferramentas - Dependências - Spring Initializr - CRUD Genérico
  • 4. HTTP - Hypertext Transfer Protocol - Protocolo para comunicação de sistemas distribuídos - Versão 1.1 - Definida pela RFC 2616, em 06/1999 - Interface de comunicação universal: Texto
  • 6. HTTP Verb Adaptado de: Leonardo Zanivan
  • 7. HTTP Status Adaptado de: Leonardo Zanivan
  • 8. HTTP Media Type Media Type Extensão do conteúdo Normalmente usado para text/css .css Estilos para páginas web application/javascript .js Lógica para páginas web text/html .html Estrutura para páginas web application/json .json Transmissão de dados https://www.iana.org/assignments/media-types/media-types.xhtml
  • 12. REST
  • 13. Arquitetura REST - Abstração para o HTTP - REST - Representational State Transfer - Estilo arquitetural para transferência de estado entre aplicações distribuídas - Stateless - Cacheable - Baseado em recursos - Recursos são definidos através de uma URI - Uniform Resource Identifier - Aplicações que aplicam REST, são denominadas RESTful
  • 14. Fluxo Protocolo TCP/IP no OS Process ID X Porta JVM Thread X Porta JVM Thread X Porta Java Web Server (Spring Boot) Java Servlet API Spring Controller Your App Controller
  • 15. API - Application Programming Interface
  • 17. Servidores de Aplicação X Embedded Java Container - Servidores de aplicação tradicionais - Redhat Wildfly / Jboss - Oracle Glassfish - Apache Tom EE - Problemas - Alto acoplamento - Peso (Consumo de recursos computacionais) - “Uma bazuca para matar uma mosca!” - Difícil configuração / manutenção / evolução - Deployable Jar (Fat jar) - Pequenas responsabilidades - Microservices - O retorno do bom e velho Main Method! - java -jar meu-fatjar.jar
  • 18. Spring Boot e Ecossistema Spring - Convenção sobre a configuração - Spring Web - Spring Data - Spring Security - Especificações Java EE (JPA, JAX-RS, JAX-WS...) - Runnable & Deployable JAR
  • 19. Ambiente de desenvolvimento - Acesso a internet - IDE - Netbeans - Eclipse - Spring Tool Suite - Intellij IDEA - Maven - Postman (Google Chrome)
  • 20. Spring Initializr start.spring.io - Dependências - Spring Web - JDBC - Spring JPA - H2 - Banco de Dados em memória - Dados do projeto - Maven / Gradle - Packaging Jar - Version 1.8
  • 21. Show me the code!
  • 22. Obrigado! Github: https://github.com/wesleyfuchter/unibave-senpex-2017 Referências: PIRES, Jackson. O que é API? REST e RESTful? Conheça as definições e diferenças!, 2017, Disponível em: <https://becode.com.br/o-que-e-api-rest-e-restful/>. Acesso em: 22 set. 2017. SAUDATE, Alexandre. REST, Construa API’s inteligentes de maneira simples. São Paulo: Casa do Código, 2015. 315p. Acervo: Leonardo Zanivan