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

APIs REST com Spring Boot

  • 1.
    Desenvolvimento de API'sREST 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
  • 3.
  • 4.
    HTTP - HypertextTransfer 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
  • 5.
  • 6.
    HTTP Verb Adaptado de:Leonardo Zanivan
  • 7.
    HTTP Status Adaptado de:Leonardo Zanivan
  • 8.
    HTTP Media Type MediaType 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
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
    Arquitetura REST - Abstraçãopara 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 ProcessID 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 - ApplicationProgramming Interface
  • 16.
  • 17.
    Servidores de AplicaçãoX 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 eEcossistema 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.
  • 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