Boas práticas
-
Uma requisição, um programa. É o que garante o menor tempo de resposta para o seu usuário — ver Comparando vários programas.
-
Sempre envie o header
Acceptcomapplication/vnd.economilha.v1+jsonpara garantir compatibilidade futura. Omitir o header aponta sempre para a versão mais recente — o que faz sua integração mudar de comportamento sozinha quando publicarmos uma nova versão. -
Prefira
responseFormat: "PARSED"em integrações novas. O formato é estável e idêntico para todos os programas, enquanto o payload bruto muda sempre que uma companhia altera a própria API. Ver Formato da resposta. -
Trate falhas por programa. Nem toda companhia estará disponível em toda busca. Verifique o campo
successdo item emresults— a requisição retorna200 OKmesmo quando a busca no programa falha. -
Não dependa da ordem dos voos dentro de
flights. -
Monitore sua quota com
GET /quotaantes de disparar lotes grandes de busca. Ver Quota e limites. -
Valide datas antes de enviar — a data de ida deve ser futura e a de volta posterior à ida. Isso evita gastar quota com requisições que voltarão em
422.
O campo id dos voos em PARSED só é válido dentro da resposta em que veio. Ele não é
estável entre chamadas e não serve para reserva — use-o apenas para deduplicar ou como chave de
lista no seu frontend.
Comparando vários programas
Cada busca vai até a API da companhia em tempo real, e os programas respondem em tempos diferentes: alguns em 7 segundos, outros passam dos 20. Isso é da natureza dos provedores.
Para comparar programas, dispare uma requisição por programa, em paralelo, e renderize cada resposta assim que ela chegar:
SMILES ████ ──► 4s já aparece na tela
LATAM ██████ ──► 6s já aparece na tela
AZUL ███████████████████████ ──► 25s entra depoisO erro comum é esperar todas as promises terminarem (Promise.all) para só então montar a tela: nesse caso o usuário fica 25 segundos olhando para um spinner por causa de um único programa lento, mesmo com os outros dois já respondidos. Prefira resolver cada requisição individualmente (Promise.allSettled, ou um handler por chamada) e ir preenchendo a lista de forma incremental.
Alguns pontos que costumam gerar dúvida:
- A quota é por programa consultado. Consultar três programas custa três buscas — nada muda em função de como você organiza as chamadas. Ver Quota e limites.
- Não há penalidade nem rate limit adicional por disparar as chamadas em paralelo.
- O tratamento de falhas fica isolado. Cada resposta traz um único
results[0], então um programa fora do ar afeta só o card daquele programa na sua tela.
A API já cuida do pior caso: uma companhia que não responder em 29 segundos volta como falha
daquele programa (providerStatusCode: 504), nunca como uma requisição sem resposta. Ainda
assim, defina um timeout no seu cliente (recomendado: 50 segundos) como rede de segurança
para falhas de rede, e trate o estouro como “programa indisponível nesta busca”.