![]() |
| Homem com celular na mão e painel escrito API de fundo. |
Índice
Introdução
- Entender quando utilizar o método HTTP POST.
- Criar uma requisição POST utilizando o THTTPClient.
- Enviar dados em formato JSON.
- Interpretar a resposta da API.
- Extrair informações retornadas pelo servidor.
- Preparar sua aplicação para utilizar autenticação Bearer Token no próximo artigo.
O que é uma API REST?
- GitHub
- Hotmart
- Mercado Livre
- ViaCEP
- OpenAI
- Banco Central
- Receita Federal
O que é o método POST?
{
"username":"emilys",
"password":"emilyspass"
}
O servidor validará essas informações e retornará um objeto JSON contendo os dados do usuário autenticado. Conhecendo a DummyJSON Para este exemplo utilizaremos a API gratuita DummyJSON. Ela simula uma API real, permitindo realizar autenticação, consultas e diversas operações sem necessidade de cadastro. O endpoint utilizado será:
POST https://dummyjson.com/user/login
O corpo da requisição será:
{
"username":"emilys",
"password":"emilyspass",
"expiresInMins":30
}
Após o login a API retornará diversas informações sobre o usuário, incluindo o Access Token, que utilizaremos no próximo artigo para acessar rotas protegidas.
Criando o Projeto
| Componente | Nome |
|---|---|
| TLabel | lblUsuario |
| TEdit | edtUsuario |
| TLabel | lblSenha |
| TEdit | edtSenha |
| TButton | btnLogin |
| TMemo | mmRetorno |
| TMemo | mmJSON |
Adicionando as Units
uses
System.Net.HttpClient,
System.Net.URLClient,
System.JSON,
System.Classes
System.Net.HttpClient
System.Net.URLClient
System.JSON
System.Classes
Será utilizada para criar Streams que enviaremos para a API.
Como funciona uma autenticação via POST?
O processo é bastante simples.
- O usuário informa login e senha.
- O Delphi cria um objeto JSON contendo essas informações.
- O JSON é enviado para a API utilizando HTTP POST.
- O servidor valida os dados.
- A API retorna um novo JSON contendo as informações do usuário.
Nossa aplicação interpreta essa resposta e exibe os dados na tela.
Em aplicações corporativas, normalmente esse retorno também contém um Access Token, que será utilizado para autenticar as próximas requisições sem que o usuário precise informar a senha novamente.
Agora o evento do botão:
procedure TForm1.btnLoginClick(Sender: TObject);
var
Http: THTTPClient;
Response: IHTTPResponse;
JSONBody: TJSONObject;
JSONRetorno: TJSONObject;
Stream: TStringStream;
begin
Http := THTTPClient.Create;
JSONBody := TJSONObject.Create;
try
JSONBody.AddPair('username', edtUsuario.Text);
JSONBody.AddPair('password', edtSenha.Text);
JSONBody.AddPair('expiresInMins', TJSONNumber.Create(30));
Stream := TStringStream.Create(JSONBody.ToJSON, TEncoding.UTF8);
try
Stream.Position := 0;
Http.ContentType := 'application/json';
Response := Http.Post(
'https://dummyjson.com/user/login',
Stream
);
mmJSON.Lines.Text := Response.ContentAsString;
if Response.StatusCode = 200 then
begin
JSONRetorno := TJSONObject.ParseJSONValue(Response.ContentAsString) as TJSONObject;
try
mmRetorno.Clear;
mmRetorno.Lines.Add('Login realizado com sucesso!');
mmRetorno.Lines.Add('');
mmRetorno.Lines.Add('Nome: ' +
JSONRetorno.GetValue<string>('firstName'));
mmRetorno.Lines.Add('Sobrenome: ' +
JSONRetorno.GetValue<string>('lastName'));
mmRetorno.Lines.Add('E-mail: ' +
JSONRetorno.GetValue<string>('email'));
mmRetorno.Lines.Add('');
mmRetorno.Lines.Add('Access Token:');
mmRetorno.Lines.Add(
JSONRetorno.GetValue<string>('accessToken')
);
finally
JSONRetorno.Free;
end;
end
else
ShowMessage('Erro: ' + Response.StatusCode.ToString);
finally
Stream.Free;
end;
finally
JSONBody.Free;
Http.Free;
end;
end;
Veja abaixo a ilustração do projeto:
Código fonte do exemplo
Você pode fazer o download do exemplo do projeto através do repositório do github:
Explicando o código
Criando o JSON
Criamos um objeto TJSONObject contendo o usuário, a senha e o tempo de expiração desejado para o token.
JSONBody.AddPair('username', edtUsuario.Text);
JSONBody.AddPair('password', edtSenha.Text);
Em seguida, convertemos esse objeto para JSON e o enviamos para a API.
Enviando a requisição
Através do método Post, enviamos o JSON para o endpoint de autenticação.
Response := Http.Post(...);
Diferentemente do método GET, o POST envia informações no corpo da requisição.
Interpretando a resposta
Após o login, a DummyJSON retorna um objeto JSON contendo os dados do usuário e um Access Token.
Extraímos esses valores utilizando:
JSONRetorno.GetValue('accessToken');
Esse token representa o usuário autenticado e será utilizado para acessar recursos protegidos da API.
Conclusão
Neste artigo aprendemos como enviar dados para uma API utilizando o método HTTP POST e realizar a autenticação de um usuário. Também obtivemos o Access Token, que será utilizado para autenticar as próximas requisições.
APIs são poderosas pois podem ser acessadas a partir de qualquer sistema, seja ele em Delphi ou outra linguagem de programação.

Nenhum comentário:
Postar um comentário