Simulando endpoints inacabados
Você combinou um schema de API com uma pessoa engenheira de backend que vai implementá-lo, mas ela está começando a codificar ao mesmo tempo que você. Seria bom simular o endpoint com facilidade e usá-lo de um jeito que, quando o endpoint ficar pronto, você não precise fazer grandes mudanças no seu código.
import { Entity, resource } from '@data-client/rest'; import { Temporal } from 'temporal-polyfill'; export class Rating extends Entity { id = ''; rating = 4.6; author = ''; date = Temporal.Instant.fromEpochMilliseconds(0); static key = 'Rating'; static schema = { date: Temporal.Instant.from, }; } export const RatingResource = resource({ path: '/ratings/:id', schema: Rating, }).extend({ getList: { dataExpiryLength: Infinity, fetch() { return Promise.resolve( ['Morningstar', 'Seekingalpha', 'Morningstar', 'CNBC'].map(author => ({ id: `${Math.random()}`, rating: (2 + Math.random() * 3).toFixed(1), author, date: '1990-01-01T00:00:00Z', })), ); }, }, });
Ao simular o RestEndpoint, podemos fingir com facilidade os dados que o servidor retornará. Isso permite usar o RatingResource, com tipagem forte, normalmente em toda a base de código.
Quando a API estiver implementada, basta remover o fetch personalizado (e toda a sobrescrita de list() caso seja só isso que ela faz).
Neste exemplo também definimos o dataExpiryLength com um tempo maior, para que os valores aleatórios gerados persistam por mais tempo. Isso torna a demo mais realista.