Consumindo API REST no Delphi: RESTClient, NetHTTPClient e a PokéAPI
Por que voltar num vídeo antigo
Esse é um conteúdo que já gravei há um tempo no canal, mas os fundamentos continuam valendo — talvez até mais agora, que estou olhando pra web e IA, porque "consumir uma API REST e tratar o retorno" é a mesma ideia em qualquer stack, só muda a sintaxe. Achei que valia trazer pro blog.
O ponto de partida foi um app simples: buscar um Pokémon pelo nome na PokéAPI e mostrar nome, id, altura, peso, experiência base e a imagem dele. Código completo no GitHub.
RESTClient, RESTRequest e RESTResponse: o trio básico
No Delphi, consumir uma API REST gira em torno de três componentes que trabalham juntos: TRESTClient guarda a URL base, TRESTRequest configura o método e dispara a chamada, TRESTResponse traz o retorno.
RESTClient.BaseURL := 'https://pokeapi.co/api/v2/pokemon/' + lNomePokemon;
RESTRequest.Method := rmGET;
RESTRequest.Execute;
if RESTResponse.StatusCode = 200 then
begin
// ...
end;
É um modelo direto: monta a URL, executa, confere o StatusCode. Nada de mágica — e é justamente por isso que é fácil de debugar quando algo dá errado.
Parseando o JSON da resposta
O RESTResponse.JSONValue já vem como TJSONObject, então dá pra extrair os campos direto com GetValue<T>, inclusive navegando em objetos aninhados:
lJsonObj := RESTResponse.JSONValue as TJSONObject;
lblNome.Caption := lJsonObj.GetValue<string>('name');
lblId.Caption := 'ID: ' + lJsonObj.GetValue<string>('id');
lImgUrl := lJsonObj
.GetValue<TJSONObject>('sprites')
.GetValue<string>('front_default');
O sprites.front_default é um exemplo simples de JSON aninhado — a PokéAPI devolve um objeto sprites com várias URLs de imagem lá dentro, e GetValue<TJSONObject> encadeado resolve isso sem precisar de uma lib de mapeamento extra.
newsletter
Gostou do post? Quando eu publicar o próximo sobre Delphi, React ou IA aplicada ao desenvolvimento, você recebe um aviso por e-mail.