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

Curso Java (Parte 8) Web Service REST

  • 1.
    Curso de Java PARTE08 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 paraWeb: Ascenssão do JavaScript
  • 3.
    Aplicações Ricas paraWeb: Ascenssão do JavaScript
  • 4.
    Aplicações Ricas paraWeb: 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ódigodiretamente 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.
  • 7.
    7 O Conceito deSPA – 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çãoCliente 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ênciade 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 – JavaScriptObject 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: ExemploAPI 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 Iniciaa 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 ServiceJSON: 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 postmano 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:
  • 22.