Parte 1: O que é REST Nesta parte veremos mais de perto como ocorre a comunicação entre o cliente e o servidor. Ao longo do caminho, revelaremos novos termos e daremos explicações sobre eles. Para deixar tudo claro, analisaremos a comunicação cliente-servidor usando o exemplo de alguma aplicação RESTful. Digamos que estamos desenvolvendo uma aplicação web capaz de armazenar informações sobre clientes e seus pedidos. Aqueles. nosso sistema é capaz de manipular algumas entidades: criá-las, editá-las, excluí-las e fornecer informações sobre elas. Essas entidades serão:
- clientes - clientes;
- pedidos - pedidos de clientes;
- itens - mercadorias.
solicitações de
As solicitações dos clientes quase sempre são feitas por HTTP. Em geral, as solicitações HTTP consistem em vários componentes:- Método HTTP;
- título;
- URI;
- corpo da solicitação.
URI e recursos
Os dados que os clientes obtêm ou modificam por meio de solicitações são chamados de recursos. A base da interação cliente-servidor é a manipulação de recursos. Recursos em REST são qualquer coisa que possa receber um nome. De certa forma, são como classes em Java. Em Java podemos criar uma classe para qualquer coisa. É a mesma coisa em REST – um recurso pode ser qualquer coisa: um usuário, um documento, um relatório, um pedido. Tudo isso pode ser uma abstração de alguma entidade ou algo concreto, por exemplo, um arquivo - uma imagem, um vídeo, uma animação, um arquivo PDF. Para nosso exemplo, temos 3 recursos:- clientes - clientes;
- pedidos - pedidos de clientes;
- itens - mercadorias.
- /clients - URI de todos os clientes existentes;
- /clients/23 - URI de um cliente específico, nomeadamente o cliente com ID=23;
- /clients/4 - URI de um cliente específico, nomeadamente o cliente com ID=4.
- /clients/4/orders — URI de todos os pedidos do cliente nº 4;
- /clients/1/orders/12 - URI do pedido nº 12 do cliente nº 1.
- /clients/1/orders/12/items — URI da lista de todos os produtos do pedido nº 12 feita pelo cliente nº 1.
Método HTTP
Método HTTP (Método HTTP em inglês) é uma sequência de quaisquer caracteres, exceto controles e separadores, que indica a operação principal em um recurso. Existem vários métodos HTTP comuns. Listamos aqueles que são usados com mais frequência em serviços RESTful:- GET - utilizado para obter informações sobre um recurso específico (via ID) ou um conjunto de recursos;
- POST - usado para criar um novo recurso;
- PUT - utilizado para alterar um recurso (via ID);
- DELETE - usado para excluir um recurso (via ID).
Títulos
As solicitações, assim como as respostas, contêm cabeçalhos HTTP. Eles enviam informações adicionais sobre a solicitação (ou resposta). Cabeçalhos são pares de valores-chave. Você pode ler a lista dos títulos mais comuns na página da Wikipedia . Com REST, os clientes geralmente podem enviar um cabeçalho Accept em suas solicitações ao servidor. É necessário informar ao servidor em que formato o cliente espera receber uma resposta dele. Várias opções de formato são apresentadas na chamada lista de tipos MIME. MIME (Multipurpose Internet Mail Extensions) é uma especificação para codificar informações e formatar mensagens para que possam ser enviadas pela Internet. Cada tipo MIME consiste em duas partes, separadas por uma barra: um tipo e um subtipo. Exemplos de tipos MIME para diferentes tipos de arquivos:- texto - texto/simples, texto/css, texto/html;
- imagem - imagem/png, imagem/jpeg, imagem/gif;
- áudio - áudio/wav, áudio/mpeg;
- vídeo - vídeo/mp4, vídeo/ogg;
- aplicação - aplicação/json, aplicação/pdf, aplicação/xml, aplicação/octeto-stream.
Accept:application/json
Este cabeçalho informa ao servidor que o cliente espera receber uma resposta no formato JSON.
Solicitar corpo
Uma mensagem enviada pelo cliente ao servidor. Se uma solicitação tem corpo ou não, depende do tipo de solicitação HTTP. Por exemplo, as solicitações GET e DELETE normalmente não contêm nenhum corpo de solicitação. Mas PUT e POST podem conter: é tudo uma questão de propósito funcional do tipo de solicitação. Afinal, para receber dados e excluí-los pelo id (que é transmitido na URL), não é necessário enviar dados adicionais ao servidor. Mas para criar um novo recurso (solicitação POST), você precisa transferir esse recurso. O mesmo vale para modificar um recurso existente. Em REST, os formatos XML ou JSON são usados com mais frequência para transmitir o corpo da solicitação. O formato mais comum é JSON. Suponha que queiramos enviar uma solicitação ao servidor e nele criar um novo recurso. Se você se lembra, como exemplo, analisamos um aplicativo que gerencia pedidos de clientes. Digamos que queremos criar um novo cliente. No nosso caso, armazenamos as seguintes informações sobre os clientes: Nome Email Número de telefone Então o corpo dessa solicitação poderia ser o seguinte JSON:{
"name" : "Amigo",
"email" : "amigo@jr.com",
"phone" : "+7 (191) 746-43-23"
}
Juntando solicitações
Portanto, vimos em que pode consistir uma solicitação de cliente. Vamos agora dar alguns exemplos de consultas com descriçõesSolicitar | Descrição |
---|---|
|
Obtenha informações sobre o cliente nº 23 em formato json ou xml |
|
Crie um novo cliente com os seguintes campos: Nome - Amigo Email - amigo@jr.com Tel. - +7 (191) 746-43-23 |
|
Edite o cliente nº 1 da seguinte forma: Nome - Ben Email - bigben@jr.com Tel. — +380 (190) 346-42-13 |
|
Exclua o pedido nº 6 do cliente nº 12 do sistema |
Respostas
Digamos algumas palavras sobre as respostas do servidor. A resposta geralmente consiste nas seguintes partes:- Código de resposta;
- cabeçalhos;
- corpo de resposta.
Códigos de resposta HTTP
Vamos dar uma olhada mais de perto nos códigos de resposta HTTP. Aqui está uma citação da Wikipedia: O código de status HTTP faz parte da primeira linha da resposta do servidor para solicitações por meio do protocolo HTTP. É um número inteiro com três dígitos decimais. O primeiro dígito indica a classe da condição. O código de resposta geralmente é seguido por uma frase explicativa em inglês separada por um espaço, que explica à pessoa o motivo dessa resposta específica. Exemplos:- 201 Criado;
- 401 não autorizado;
- 507 Armazenamento insuficiente.
- 1ХХ - informativo;
- 2ХХ - informar sobre casos de aceitação e processamento bem-sucedido de solicitação de cliente;
- 3XX - informar ao cliente que para concluir a operação com sucesso é necessário realizar outra requisição, normalmente utilizando uma URI diferente;
- 4ХХ - erro do cliente. Por exemplo, uma solicitação construída incorretamente ou o conhecido código 404 Not Found, que pode ocorrer quando um cliente solicita um recurso inexistente;
- 5ХХ - erro do servidor. Retornado ao cliente se a operação falhar devido a falha do servidor.
GO TO FULL VERSION