Skip to content

paneladev/arquitetura-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Arquitetura WEB e REST API`s


Desktop vs Web

  • Desktop: são programas/aplicações acessados diretamente no computador do usuário, através do seu sistema operacional. Ex: Word, Photoshop, Paint, Editor de vídeo, IntelliJ
  • Web: são aplicações ou sites que acessamos pelo navegador da web,como o Google Chrome, Mozilla Firefox ou Internet Explorer.

Cliente e Servidor

img.png

Cliente: Solicita um determinado serviço, através do envio de uma mensagem ao servidor.

Servidor: Disponibiliza serviços aos usuários, ou seja, ele recebe uma requisição do usuário, executa a tarefa e envia uma resposta ao cliente.


Protocolo HTTP (Hypertext Transfer Protocol)

Para que exista uma comunicação entre cliente e servidor, precisamos definir uma linguagem comum e para isso utilizamos o protocolo HTTP. O protocolo HTTP se divide em 4 partes, cada divisão é responsável por uma parte da mensagem que vai ser enviado do cliente ao servidor e vice-versa.

Abaixo temos as 4 partes que compõem uma mensagem HTTP.

  • URI (Uniform Resource Identifier)
  • Method
  • Header
  • Body

img.png

URI (Uniform Resource Identifier)

Exemplos de URI’s:

  • http://minha-aplicacao.com.br/produtos
  • http://www.google.com.br
  • http://201.20.10.145/produtos

Method / Verbos

Vamos considerar que a URI da nossa aplicação é está: http://meu-app.com/produtos, podemos dizer que o nosso recurso é /produtos, quer dizer que queremos manipular produtos, eu posso querer listar produtos, cadastrar, alterar e/ou deletar produtos. Se o endereço é o mesmo, como podemos dizer que tipo de operação estamos querendo fazer?! é para isso que servem os methods ou verbos como também são chamados

Método Ação
GET Realiza a pesquisa de um ou mais dados de um determinado recurso
POST Realiza o envio de dados para persistência de um recurso
PUT Realiza a modificação de todas as atuais informações do recurso enviado no payload da requisição
PATCH Realiza modificações parciais em um recurso enviado no payload da requisição
DELETE Realiza a remoção de um recurso específico

HTTP Methods.

Header

São dados adicionais enviados pelo agente para dar contexto a transação que está ocorrendo entre o cliente e o servidor. Exemplos de agente: browser, postman, uma aplicação, etc.

Request Payload

No caso do method GET não sde deve enviar um payload. Mas para os demais caso o payload é o corpo da requisição é de fato o conteudo que queremos que chegue até o servidor ou até o cliente. No caso do recurso de produtos o payload seria os dados de um produto que queremos persistir na aplicação, ou que queremos alterar.

Códigos HTTP

Categoria Descrição
1xx Informativo – a solicitação foi aceita ou o processo continua em andamento
2xx Confirmação – a ação foi concluída ou entendida
3xx Redirecionamento – indica que algo mais precisa ser feito ou precisou ser feito para completar a solicitação
4xx Erro do cliente- indica que a solicitação não pode ser concluída ou contém a sintaxe incorreta
5xx Erro no servidor – o servidor falhou ao concluir a solicitação

Categorias mais utilizadas:

  • 200 OK
  • 201 CREATED
  • 204 NO CONTENT
  • 400 BAD REQUEST
  • 401 UNAUTHORIZED
  • 403 FORBIDDEN
  • 404 NOT FOUND
  • 500 INTERNAL SERVER ERROR

HTTP Status Codes

Endpoint

Chamamos de Endpoint um recurso completo que tenha a sua URI, Method, Header, Body e Response Status;

O que é REST (Representational State Transfer)

  • Trata-se de um conjunto de principios e definições necessários para a criação de um projeto com interfaces bem definidas.

O que é API (Application Programming Interface)

  • API é um conjunto de normas que possibilita a comunicação entre plataformas através de uma série de padrões e protocolos.

O que é JSON (JavaScript Object Notation)

  • Ele é basicamente um formato leve para troca de informações/dados entre aplicações.

Nos tópicos acima falamos sobre Request Payload, quando chamamos o recurso /produtos para salvar um determinado produto, devemos enviar as informações deste produto para a persistência no formato JSON. Exemplo do objeto Produto em Java.

public class Produto {
    String sku;
    String nome;
    String descricao;
    Double valor;
    Integer quantidade;
}

Sabendo que nosso objeto Produto tem os atributos acima e precisamos realizar o cadastro de um novo produto, representaremos abaixo em JSON os dados de um novo produto.

{
  "sku": "RS123",
  "nome": "Teclado Mecanico",
  "descricao": "Teclado Mecanico com iluminação RGB",
  "valor": 99.9,
  "quantidade": 999
}
  • Framework
  • Código aberto
  • Criado em 2002
  • Possui diversos módulos que se acoplam ao framework principal
    • Aplicação Web (JSP / JSF)
    • Integração com bancos de dados relacionais e não relacionais
    • Integração com sistemas de Cache
    • Serviços de Mensageria
    • Logging
  • Projetado para ter uma aplicação em execução o mais rápido possível
  • Não exige grandes configurações
  • Possui vários módulos que fazem a configuração automatica para que a aplicação tenha diversas funcionalidades
    • Servidor Web
    • Agendamentos de tarefas (Jobs)
    • Conexão com bancos de dados relacionais e não relacionais
    • Segurança (Autenticação e Autorização)

Mais sobre Spring Framework

Spring Initializr para geração rápida de um projeto.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published