🚀 Capítulo 13: HTTP Client e Conexão com APIs
🎯 Objetivo da Aula
Ao final desta aula, você será capaz de usar o módulo HttpClient do Angular para realizar requisições HTTP para servidores externos (APIs), buscando dados reais na internet e exibindo-os na sua aplicação.
🏢 O Cenário Prático (Seu Desafio)
Chega de dados fictícios! Seu desafio hoje é conectar a sua nave ao Holocron da Galáxia (uma API real chamada SWAPI - Star Wars API) e buscar a lista real de planetas catalogados pelo Império para exibir no seu radar!
🧠 Fundamentos: A Teoria Traduzida
Para buscar dados na internet, o Angular usa um serviço chamado HttpClient. Ele se comunica com servidores usando o protocolo HTTP (o mesmo da internet).
1. O que é uma API?
É um sistema web que guarda dados e os fornece para quem pedir (através de uma URL). No nosso caso, usaremos a URL: https://swapi.dev/api/planets/.
2. Observables e Subscribe
O HttpClient do Angular não entrega os dados na hora. Ele entrega um Observable (um “observável”). Pense nele como uma encomenda que você fez na internet. Você precisa “assinar” (subscribe) a entrega para ser avisado quando ela chegar!
- Sintaxe:
meuServico.buscarDados().subscribe(resultado => { ... })
📖 Exemplo Guiado: Buscando Planetas Reais
Vamos criar um serviço para buscar os dados.
🛠️ Passo a Passo (Habilitando o HTTP)
Se você estiver usando componentes Standalone (padrão moderno), abra o arquivo app.config.ts e certifique-se de que o HTTP está habilitado:
import { provideHttpClient } from '@angular/common/http';
export const appConfig: ApplicationConfig = {
providers: [provideHttpClient()]
};🛠️ Passo a Passo (Criando o Serviço)
Crie um serviço chamado holocron: ng g s holocron.
Abra src/app/holocron.service.ts:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class HolocronService {
private apiUrl = 'https://swapi.dev/api/planets/';
constructor(private http: HttpClient) { }
getPlanetas(): Observable<any> {
// Faz a requisição GET para a API
return this.http.get(this.apiUrl);
}
}🛠️ Passo a Passo (Componente)
No seu painel-controle.component.ts:
import { Component, OnInit } from '@angular/core';
import { HolocronService } from '../holocron.service';
@Component({ /* ... */ })
export class PainelControleComponent implements OnInit {
planetasReais: any[] = [];
constructor(private holocronService: HolocronService) {}
ngOnInit(): void {
this.holocronService.getPlanetas().subscribe((resposta: any) => {
// A SWAPI retorna os dados dentro de um array chamado 'results'
this.planetasReais = resposta.results;
});
}
}🕹️ Como Executar e Testar no VS Code
- No HTML do painel, faça um
*ngForpara listarplanetasReais. - Como a resposta é um objeto complexo, use
{{ planeta.name }}para ver o nome! - Salve e veja os planetas reais do universo Star Wars (Tatooine, Alderaan…) aparecerem na sua tela!
🛠️ Prática Obrigatória 1
Altere a URL do serviço para https://swapi.dev/api/people/ para buscar os personagens em vez de planetas. Exiba os nomes dos personagens na tela.
🛠️ Prática Obrigatória 2
A API retorna o peso dos personagens no campo mass. Use o pipe number (ou apenas exiba o texto) para mostrar o peso ao lado do nome do personagem.
🔑 Gabarito de Código/Fórmulas
Prática 1:
No serviço:
private apiUrl = 'https://swapi.dev/api/people/';No HTML:
<li *ngFor="let pessoa of planetasReais"> <!-- Nome da variável ainda é o mesmo -->
{{ pessoa.name }}
</li>