Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Melhor maneira de pegar um dados de uma API que retorna um Page

Olá, caso eu tenha uma API que retorne um Page e não só o JSON direito do pensamento. Exemplo:

{
  "content": [
    {
      "id": 1,
      "conteudo": "Teste1",
      "autoria": "Teste1",
      "modelo": "modelo1"
    },
    {
      "id": 2,
      "conteudo": "Teste2",
      "autoria": "Teste2",
      "modelo": "modelo2"
    },
    {
      "id": 3,
      "conteudo": "Teste3",
      "autoria": "Teste3",
      "modelo": "modelo3"
    }
  ],
  "pageable": {
    "sort": {
      "empty": false,
      "sorted": true,
      "unsorted": false
    },
    "offset": 0,
    "pageNumber": 0,
    "pageSize": 10,
    "unpaged": false,
    "paged": true
  },
  "last": true,
  "totalPages": 1,
  "totalElements": 3,
  "size": 10,
  "number": 0,
  "sort": {
    "empty": false,
    "sorted": true,
    "unsorted": false
  },
  "first": true,
  "numberOfElements": 3,
  "empty": false
}

A melhor maneira de mapear os dados do content e outras informações relevantes seria usando uma interface? Exemplo:

export interface Page {
  content: Pensamento[];
  size: number;
  number: number;
}

export interface Pensamento {
  id: number;
  conteudo: string;
  autoria: string;
  modelo: string;
}
2 respostas
solução!

Olá Diego, tudo bem?

É comum termos que fazer consultas para obter informações que desejamos. E, muitas vezes, o que vamos receber da API não será exatamente o que estamos precisando. Virão informações demais, ou de menos, haha.

Então é sim uma boa prática definir uma ou mais interfaces com as propriedades necessárias. Além disso, você pode especificar essa interface como o parâmetro de tipo da chamada HttpClient.get() no serviço e transformar os dados de resposta conforme necessário pela interface da pessoa usuária.

Veja esse guia na documentação, pode te auxiliar.

Spoiler: fica de olho que, em breve, sairá um curso onde eu vou mostrar esse passo a passo também. Vou explicar como consumir uma API externa e manipular o fluxo de informações recebidas. ;)

Abraços, bons estudos!

Opa, compreendi, muito obrigado!