- 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: 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.
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
Exemplos de URI’s:
http://minha-aplicacao.com.br/produtos
http://www.google.com.br
http://201.20.10.145/produtos
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 |
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.
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.
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
Chamamos de Endpoint um recurso completo que tenha a sua URI, Method, Header, Body e Response Status;
- Trata-se de um conjunto de principios e definições necessários para a criação de um projeto com interfaces bem definidas.
- API é um conjunto de normas que possibilita a comunicação entre plataformas através de uma série de padrões e protocolos.
- 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)