Article image
Patrícia Gagliardi
Patrícia Gagliardi02/02/2023 16:23
Compartilhe

Como Resolver o Problema de Consumo de API em Angular de Forma Eficiente

  • #TypeScript
  • #Angular

Há um tempo atrás, iniciei aqui na DIO, um bootcamp com aulas de Angular, e após concluí-las, resolvi fazer um projeto da clássica pokedéx com uso de Angular, para treino de consumo de API. Afinal, quem no início das aprendizagens em TI nunca fez sua pokedéx com o uso do PokeAPI, não é mesmo?

Pois bem, aparentemente parecia ser algo simples, afinal, uma pokedéx feita em HTML + CSS + JS é algo simples de se fazer, sem muitas complicações, porém ao passar o projeto para Angular, quando me deparei na parte do consumo da API pokeAPI, o pesadelo parra conseguir respostas começou, afinal, o Angular, é um framework “recente”, criado em 2016 pela Google (O Angular de fato, não o AngularJS), e que há várias versões em uso, e cada uma com sua “pequena” mudança, atualmente apresentando a versão 15.

No caso, quando realizei o projeto, utilizava a v14, essa possuindo uma diferença bem importante no uso de uma ferramenta que considero fundamental no consumo de APIs, o subscribe, que acaba sendo o amigo irmão do get do HttpClientModule.

O subscribe do Angular, é uma funcionalidade onde é possível tornar o evento “inscrito” em outro do tipo rest. Ou seja, exemplificando, seria como o subscribe de um canal no Youtube, por exemplo, pelo qual ao se inscrever no canal, você recebe notificações de vídeos que foram adicionados ao canal.

Assim, após criar a função get para “acessar” a url d API e realização sua requisição HTTP, o subscribe permite a variável, seja um objeto, ou uma array, ficar vinculada e ouvindo essa requisição de forma ativa.

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

 

@Injectable({
providedIn: 'root'
})

export class PokeApiService { 

private url: string = 'https://pokeapi.co/api/v2/pokemon/'

constructor(private http:HttpClient) { }
 
getPokemon(poke:string) {
  return this.http.get(this.url+poke)
}

}

Assim, utilizando o subscribe, a partir das versões mais atuais sua declaração se tornou de forma diferente, tendo que ser declarada com o uso do Next e o Error

getPokemon(poke:string) {
  this.pokeApi.getPokemon(poke).subscribe({
    next:(response)=> {
      this.pokemons.push(response)
    },
    error(err) {
        console.log(err.message)
    },
  })
}

Esse foi um exemplo rápido, para acesso direto dos dados de um único Pokémon. 

Para quem quiser consultar o código completo da Pokedéx com Angular -> pcanossa/Angular_Pokedex: Criação de pokedéx com utilização de framework Angular e PokeAPI (github.com)

Compartilhe
Comentários (1)
Renan Passos
Renan Passos - 02/02/2023 20:34

Muito massa, Patrícia! Reactive Programming é uma das coisas mais legais da programação, o Angular não poderia ter feito melhor abraçando o RxJs como fizeram. Amo muito tudo isso.