Este documento apresenta uma introdução ao desenvolvimento de APIs RESTful usando o framework Spring Boot. Aborda conceitos como HTTP, arquitetura REST, servidores de aplicação versus containers embutidos, e o ecossistema Spring. Também mostra como configurar um ambiente de desenvolvimento com ferramentas como Spring Initializr e criar um CRUD genérico de exemplo.
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
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
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
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
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