SlideShare uma empresa Scribd logo
Curso de Java
PARTE 08
Web Service
Uma Introdução
Motivação: Rich Client Application / SPA
Requisições Assíncronas
Arquitetura de Web Services
REST / JSON
Spring Boot Application
@RestController / @ResponseBody
por: Mário Sergio
mariosergio30@gmail.com
linkedin.com/in/mario-sergio-a1125831
Aplicações Ricas para Web: Ascenssão do JavaScript
Aplicações Ricas para Web: Ascenssão do JavaScript
Aplicações Ricas para Web: Exemplos
4
Com a evolução dos frameworks e libraries Java Script passou a ser
possível o desenvolvimento de Rich Client Web Applications
com maior velocidade/produtividade.
A Google foi uma das lideres mundiais
que mais contribuiu para a evolução
tecnologias para desenvolvimento de
aplicações WEB.
5
Desenvolver escrevendo código diretamente em JavaScript para todas essas as
aplicações Ricas para Web que utilizamos hoje demandaria um trabalho quase
que impossível de se realizar.
Aplicações Ricas para Web: Exemplos
6
Front-end vs Back-end
7
O Conceito de SPA – Simple Page Application que consiste em uma única página web com o objetivo de
fornecer uma experiência do usuário similar à de um aplicativo desktop.
Em um SPA, todo o código necessário no front-end (HTML, JavaScript, e CSS) é obtido com um único carregamento de página.
Em seguida, outros recursos são dinamicamente adicionados à página a partir de dados (json, xml) fornecidos por
serviços web (back-end).
Aplicações Ricas para Web: Arquitetura
Síncrona
Quando uma requisição é enviada, o processo remetente é
bloqueado até que ocorra uma resposta, ou seja, não é
possível enviar novas requisições até que nossa requisição
atual seja finalizada, existe sincronismo entre as
requisições.
Assíncrona
Em uma requisição assíncrona, não existe
sincronismo entre as requisições, sendo assim,
podemos enviar diversas requisições em
paralelo, onde cada resposta retorna quando
estiver pronta.
Tipos de requisição
Embora o acrônimo AJAX referencie o formato para troca de dados
XML, atualmente o formato de dados padrão para web services é o
JSON, por sua simplicidade e leveza.
Saber mais:
https://pt.slideshare.net/rcandidosilva/gujavasc-combinando-angularjs-com-java-ee
Web Services
Aplicação Cliente
Front-end
Aplicação Servidora
Back-end
Os Web Services são componentes que permitem às aplicações enviar e receber dados.
Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, um
formato intermediário como XML, CSV, JSON, etc.
Web Services: Transfência de dados REST
REST: Representational State Transfer, não é uma tecnologia, uma biblioteca, e nem tampouco uma
arquitetura, mas sim um modelo a ser utilizado para se projetar arquiteturas de software distribuído,
baseadas em comunicação via rede.
Esse conjunto de URL´s chamamos de API´s (Application Programm Interface)
que um Web Service disponibiliza (publica) para serem utilizados (consumidos)
pelas aplicações Cliente (desktops, celulares, entre outros dispositivos).
10
JSON – JavaScript Object Notation
É um modelo para armazenamento e
transmissão de dados no formato
textual estruturado.
Tem sido bastante utilizado por
aplicações Web devido a sua
capacidade de estruturar informações
de uma forma compacta e eficiente.
Web Services: Modelo de dados JSON
11
Web Services: Exemplo API da Marvel
Saiba mais:
https://developer.marvel.com/docs
12
Projeto de Exemplo: startJavaWeb03
GIT: https://github.com/mariosergio30/startJavaWeb03
Veremos neste Slide
Abordado em: Parte 07 Back-end Web
13
@SpringBootApplication
Anotação que Inicia a aplicação
Java dentro de um container WEB
embutido (tomcat)
Atenção: para mais detalhes sobre este projeto, assim como sobre as dependências do maven necessárias,
acesse o Slide: Curso Java (Parte 7) Back-end Web, disponível em https://pt.slideshare.net/
Web Service JSON: Spring Boot
14
Web Service JSON: RestController
A anotação @RestController indica que essa a classe é um controlador WEB (expõe os métodos da classe como recursos web).
Em outras palavras: faz com que esse classe fique escutando as requisições web que chegam a neste endereço localhost:8080
A diferença do @Controller é que o @RestController faz com que o valor retornado no método (return) seja enviado para o
browser no Corpo do Response HTTP.
Além disso, quando e o return for o OBJETO JAVA qualquer ou uma lista de objetos, o Spring sabe que deverá processar
(serializar) a resposta no formato JSON antes de enviar o response ao browser. Para isso, o Spring utiliza a library Jackson
JSON Processor jackson-databind, importada automaticamente pelo Spring Boot.
Obs: Se o return for apenas um valor String, o conteúdo é enviado diretamente ao browser, sem passar por qualquer pré-processamento do
Spring MVC. O Spring não tentará substituir por uma pagina jsp, isso somente ocorreria se estivéssemos usando anotação @Controller na
classe, e também não anotássemos o método com ResponseBody.
@RestController = @Controler + @ResponseBody,
por isso não é preciso anotar os métodos com @ResponseBody
15
Saber mais:
https://howtodoinjava.com/spring-restful/spring-rest-hello-world-json-example/
Web Service JSON: Responses
Response de uma disciplina no formato JSON
Response de uma lista de disciplinas no formato JSON
16
Web Service JSON
Já observamos a facilidade do Spring em retornar dados no formato JSON em
resposta a uma requisição a partir de um navegador. Mas na prática, não há qualquer
sentido responder em JSON diretamente para ser exibido em um navegador.
Na prática, essas requisições serão realizadas a
partir de um cliente REST, seja uma aplicação de
front-end (Java Script), app móvel, ou até mesmo a
partir de outro Web Service.
Para simular essas requisições a partir de um cliente REST,
iremos utilizar a ferramenta Postman.
Com essa ferramenta, conseguiremos também enviar dados no formato JSON como
parâmetros de entrada para nosso Web Service, utilizando o método POST.
https://www.getpostman.com/downloads/
17
Importe no postman o collections da APIs do nosso projeto, para facilitar nossos testes
Web Service JSON: API Escolar
18
Web Service JSON: API Escolar
method: GET method: GET method: POST
REQUEST:
RESONSE:
REQUEST:
RESONSE:
REQUEST:
RESONSE:
19
Web Service JSON: GET sem parâmetros
// @RestController
da classe transforma
o return do método
(lista de alunos)
para o formato JSON
20
Web Service JSON: GET com parâmetros no Body
A anotação @RequestBody antes do nome do
parametro do método, indica ao Spring que o valor
enviado no Request estará no formato Json.
{
"matricula": "00000001"
}
Assim, o conteúdo do Request JSON precisa ter os mesmos atributos presentes no parametro do método.
21
Web Service JSON: POST com parâmetros no Body
Saber mais:
https://www.baeldung.com/spring-request-response-body
@RequestBody:
Neste caso, os dados JSON
passados na requisição representam
todos os atributos da classe Aluno.
method: POST
-Mais seguro que o GET
-Dados não são visíveis na URL
-Dados não ficam no cache do
navegador (bookmark)
-Suporta o envio de grande
volume de dados.
Dependendo apenas do cliente:
Obrigado

Mais conteúdo relacionado

Mais procurados

Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Ana Albert
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
Eduardo Mendes
 
Programação para Web II: JavaServer Pages
Programação para Web II:  JavaServer PagesProgramação para Web II:  JavaServer Pages
Programação para Web II: JavaServer Pages
Alex Camargo
 
Java Web 1 Introducao
Java Web 1 IntroducaoJava Web 1 Introducao
Java Web 1 Introducao
Eduardo Mendes
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
Fabio Noth
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
Diego Pacheco
 
Aula 1 - curso java web - JSP Java Server Page
Aula 1 - curso java web - JSP Java Server PageAula 1 - curso java web - JSP Java Server Page
Aula 1 - curso java web - JSP Java Server Page
Evandro Júnior
 
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
Professor Samuel Ribeiro
 
Cake Php
Cake PhpCake Php
Cake Php
Laura Lopes
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Professor Samuel Ribeiro
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Carl Edwin
 
JSPs Introdução Parte 1
JSPs Introdução Parte 1JSPs Introdução Parte 1
JSPs Introdução Parte 1
Elaine Cecília Gatto
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
Diego Feitoza
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
Eduardo Bregaida
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
Eduardo Mendes
 
1409243945064
14092439450641409243945064
1409243945064
Fábio Junior
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
Rosicleia Frasson
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
jornaljava
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
silvio_sas
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
Marcio Marinho
 

Mais procurados (20)

Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Programação para Web II: JavaServer Pages
Programação para Web II:  JavaServer PagesProgramação para Web II:  JavaServer Pages
Programação para Web II: JavaServer Pages
 
Java Web 1 Introducao
Java Web 1 IntroducaoJava Web 1 Introducao
Java Web 1 Introducao
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Aula 1 - curso java web - JSP Java Server Page
Aula 1 - curso java web - JSP Java Server PageAula 1 - curso java web - JSP Java Server Page
Aula 1 - curso java web - JSP Java Server Page
 
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
 
Cake Php
Cake PhpCake Php
Cake Php
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
 
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
Monografia restful -_2013_-_desenvolvimento_v17-final-2014[1]
 
JSPs Introdução Parte 1
JSPs Introdução Parte 1JSPs Introdução Parte 1
JSPs Introdução Parte 1
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
1409243945064
14092439450641409243945064
1409243945064
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 

Semelhante a Curso Java (Parte 8) Web Service REST

Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
Paulo José Almeida
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
Fabricio Carvalho
 
Transformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonTransformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para json
Jeison Barros
 
WebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuthWebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuth
Jean Lima Lopes
 
JavaEE
JavaEEJavaEE
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
Fabricio Carvalho
 
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
Manoel Afonso
 
Programação asp
Programação aspProgramação asp
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
armeniocardoso
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
Luan Felipe Knebel
 
Asp tutorial asp
Asp   tutorial aspAsp   tutorial asp
Asp tutorial asp
robinhoct
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
BrunoAlbuquerque864673
 
Jsf
JsfJsf
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
Amanda Luz
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
BrunoAlbuquerque864673
 
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
Wagner Roberto dos Santos
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
Daniel Brandão
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
Alexandre Antunes
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento web
Valdir Junior
 
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xDicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Rodrigo Kono
 

Semelhante a Curso Java (Parte 8) Web Service REST (20)

Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
Transformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonTransformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para json
 
WebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuthWebAPI-Route-Translate-BasicAuth
WebAPI-Route-Translate-BasicAuth
 
JavaEE
JavaEEJavaEE
JavaEE
 
Web Sphere Application Server
Web Sphere Application ServerWeb Sphere Application Server
Web Sphere Application Server
 
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
 
Programação asp
Programação aspProgramação asp
Programação asp
 
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Asp tutorial asp
Asp   tutorial aspAsp   tutorial asp
Asp tutorial asp
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
Jsf
JsfJsf
Jsf
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
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
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Mvc model view controller - java para desenvolvimento web
Mvc   model view controller - java para desenvolvimento webMvc   model view controller - java para desenvolvimento web
Mvc model view controller - java para desenvolvimento web
 
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xDicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
 

Mais de Mario Sergio

Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
Mario Sergio
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
Mario Sergio
 
Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)
Mario Sergio
 
Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)
Mario Sergio
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)
Mario Sergio
 
Comparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaComparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs Java
Mario Sergio
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
Mario Sergio
 
Curso de Java (Parte 1)
Curso de Java (Parte 1)Curso de Java (Parte 1)
Curso de Java (Parte 1)
Mario Sergio
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
Mario Sergio
 
Bancode dados modelagem conceitual
Bancode dados modelagem conceitualBancode dados modelagem conceitual
Bancode dados modelagem conceitual
Mario Sergio
 
Educação Tecnológica com Raspberry Pi
Educação Tecnológica com Raspberry PiEducação Tecnológica com Raspberry Pi
Educação Tecnológica com Raspberry Pi
Mario Sergio
 

Mais de Mario Sergio (11)

Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)
 
Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)
 
Comparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaComparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs Java
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
 
Curso de Java (Parte 1)
Curso de Java (Parte 1)Curso de Java (Parte 1)
Curso de Java (Parte 1)
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Bancode dados modelagem conceitual
Bancode dados modelagem conceitualBancode dados modelagem conceitual
Bancode dados modelagem conceitual
 
Educação Tecnológica com Raspberry Pi
Educação Tecnológica com Raspberry PiEducação Tecnológica com Raspberry Pi
Educação Tecnológica com Raspberry Pi
 

Último

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 

Último (8)

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 

Curso Java (Parte 8) Web Service REST

  • 1. Curso de Java PARTE 08 Web Service Uma Introdução Motivação: Rich Client Application / SPA Requisições Assíncronas Arquitetura de Web Services REST / JSON Spring Boot Application @RestController / @ResponseBody por: Mário Sergio mariosergio30@gmail.com linkedin.com/in/mario-sergio-a1125831
  • 2. Aplicações Ricas para Web: Ascenssão do JavaScript
  • 3. Aplicações Ricas para Web: Ascenssão do JavaScript
  • 4. Aplicações Ricas para Web: Exemplos 4 Com a evolução dos frameworks e libraries Java Script passou a ser possível o desenvolvimento de Rich Client Web Applications com maior velocidade/produtividade. A Google foi uma das lideres mundiais que mais contribuiu para a evolução tecnologias para desenvolvimento de aplicações WEB.
  • 5. 5 Desenvolver escrevendo código diretamente em JavaScript para todas essas as aplicações Ricas para Web que utilizamos hoje demandaria um trabalho quase que impossível de se realizar. Aplicações Ricas para Web: Exemplos
  • 7. 7 O Conceito de SPA – Simple Page Application que consiste em uma única página web com o objetivo de fornecer uma experiência do usuário similar à de um aplicativo desktop. Em um SPA, todo o código necessário no front-end (HTML, JavaScript, e CSS) é obtido com um único carregamento de página. Em seguida, outros recursos são dinamicamente adicionados à página a partir de dados (json, xml) fornecidos por serviços web (back-end). Aplicações Ricas para Web: Arquitetura Síncrona Quando uma requisição é enviada, o processo remetente é bloqueado até que ocorra uma resposta, ou seja, não é possível enviar novas requisições até que nossa requisição atual seja finalizada, existe sincronismo entre as requisições. Assíncrona Em uma requisição assíncrona, não existe sincronismo entre as requisições, sendo assim, podemos enviar diversas requisições em paralelo, onde cada resposta retorna quando estiver pronta. Tipos de requisição Embora o acrônimo AJAX referencie o formato para troca de dados XML, atualmente o formato de dados padrão para web services é o JSON, por sua simplicidade e leveza.
  • 8. Saber mais: https://pt.slideshare.net/rcandidosilva/gujavasc-combinando-angularjs-com-java-ee Web Services Aplicação Cliente Front-end Aplicação Servidora Back-end Os Web Services são componentes que permitem às aplicações enviar e receber dados. Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, um formato intermediário como XML, CSV, JSON, etc.
  • 9. Web Services: Transfência de dados REST REST: Representational State Transfer, não é uma tecnologia, uma biblioteca, e nem tampouco uma arquitetura, mas sim um modelo a ser utilizado para se projetar arquiteturas de software distribuído, baseadas em comunicação via rede. Esse conjunto de URL´s chamamos de API´s (Application Programm Interface) que um Web Service disponibiliza (publica) para serem utilizados (consumidos) pelas aplicações Cliente (desktops, celulares, entre outros dispositivos).
  • 10. 10 JSON – JavaScript Object Notation É um modelo para armazenamento e transmissão de dados no formato textual estruturado. Tem sido bastante utilizado por aplicações Web devido a sua capacidade de estruturar informações de uma forma compacta e eficiente. Web Services: Modelo de dados JSON
  • 11. 11 Web Services: Exemplo API da Marvel Saiba mais: https://developer.marvel.com/docs
  • 12. 12 Projeto de Exemplo: startJavaWeb03 GIT: https://github.com/mariosergio30/startJavaWeb03 Veremos neste Slide Abordado em: Parte 07 Back-end Web
  • 13. 13 @SpringBootApplication Anotação que Inicia a aplicação Java dentro de um container WEB embutido (tomcat) Atenção: para mais detalhes sobre este projeto, assim como sobre as dependências do maven necessárias, acesse o Slide: Curso Java (Parte 7) Back-end Web, disponível em https://pt.slideshare.net/ Web Service JSON: Spring Boot
  • 14. 14 Web Service JSON: RestController A anotação @RestController indica que essa a classe é um controlador WEB (expõe os métodos da classe como recursos web). Em outras palavras: faz com que esse classe fique escutando as requisições web que chegam a neste endereço localhost:8080 A diferença do @Controller é que o @RestController faz com que o valor retornado no método (return) seja enviado para o browser no Corpo do Response HTTP. Além disso, quando e o return for o OBJETO JAVA qualquer ou uma lista de objetos, o Spring sabe que deverá processar (serializar) a resposta no formato JSON antes de enviar o response ao browser. Para isso, o Spring utiliza a library Jackson JSON Processor jackson-databind, importada automaticamente pelo Spring Boot. Obs: Se o return for apenas um valor String, o conteúdo é enviado diretamente ao browser, sem passar por qualquer pré-processamento do Spring MVC. O Spring não tentará substituir por uma pagina jsp, isso somente ocorreria se estivéssemos usando anotação @Controller na classe, e também não anotássemos o método com ResponseBody. @RestController = @Controler + @ResponseBody, por isso não é preciso anotar os métodos com @ResponseBody
  • 15. 15 Saber mais: https://howtodoinjava.com/spring-restful/spring-rest-hello-world-json-example/ Web Service JSON: Responses Response de uma disciplina no formato JSON Response de uma lista de disciplinas no formato JSON
  • 16. 16 Web Service JSON Já observamos a facilidade do Spring em retornar dados no formato JSON em resposta a uma requisição a partir de um navegador. Mas na prática, não há qualquer sentido responder em JSON diretamente para ser exibido em um navegador. Na prática, essas requisições serão realizadas a partir de um cliente REST, seja uma aplicação de front-end (Java Script), app móvel, ou até mesmo a partir de outro Web Service. Para simular essas requisições a partir de um cliente REST, iremos utilizar a ferramenta Postman. Com essa ferramenta, conseguiremos também enviar dados no formato JSON como parâmetros de entrada para nosso Web Service, utilizando o método POST. https://www.getpostman.com/downloads/
  • 17. 17 Importe no postman o collections da APIs do nosso projeto, para facilitar nossos testes Web Service JSON: API Escolar
  • 18. 18 Web Service JSON: API Escolar method: GET method: GET method: POST REQUEST: RESONSE: REQUEST: RESONSE: REQUEST: RESONSE:
  • 19. 19 Web Service JSON: GET sem parâmetros // @RestController da classe transforma o return do método (lista de alunos) para o formato JSON
  • 20. 20 Web Service JSON: GET com parâmetros no Body A anotação @RequestBody antes do nome do parametro do método, indica ao Spring que o valor enviado no Request estará no formato Json. { "matricula": "00000001" } Assim, o conteúdo do Request JSON precisa ter os mesmos atributos presentes no parametro do método.
  • 21. 21 Web Service JSON: POST com parâmetros no Body Saber mais: https://www.baeldung.com/spring-request-response-body @RequestBody: Neste caso, os dados JSON passados na requisição representam todos os atributos da classe Aluno. method: POST -Mais seguro que o GET -Dados não são visíveis na URL -Dados não ficam no cache do navegador (bookmark) -Suporta o envio de grande volume de dados. Dependendo apenas do cliente: