Ir al contenido

Buenas prácticas

Reintenta con Retry-After, nunca con un bucle fijo

Sección titulada «Reintenta con Retry-After, nunca con un bucle fijo»

Un 503 (overloaded) y un 429 rate_limited traen Retry-After en segundos. Espera exactamente eso antes de reintentar — no es un número decorativo, es lo que el servidor sabe que necesita para dejar de estar saturado. 429 quota_exceeded es distinto: no trae Retry-After porque reintentar en segundos no cambia nada; la cuota se resetea mensualmente.

Por defecto, GET /v1/quotes puede responder con una cotización cacheada de hasta 300 segundos. Si tu caso de uso tolera precios de hace unos minutos, no toques max_age — es más rápido y no le pide nada nuevo a ningún canal. Si necesitas el precio en vivo en este instante exacto (por ejemplo, justo antes de mostrarle el total final a un usuario que va a pagar), pasa max_age=0.

Una vez que tengas el hotel_id de un hotel (lo obtienes la primera vez que lo resuelves por name), guárdalo y úsalo en adelante. Resolver por nombre hace un emparejamiento por distancia GPS que es confiable pero no gratis — saltarlo cuando ya conoces el id es más rápido y más predecible.

Agrupa en lotes, pero no más allá de lo necesario

Sección titulada «Agrupa en lotes, pero no más allá de lo necesario»

POST /v1/quotes acepta hasta 200 hoteles por llamada (el techo físico; tu plan puede limitarte por debajo de eso). El beneficio de agrupar es la latencia (un viaje de red en vez de muchos), no el precio: se cobra por hotel-quote igual. Agrupa cuando de verdad vas a mostrar varios hoteles a la vez; pedir 200 para usar solo 3 no ahorra nada, y el rango práctico recomendado para un cliente con timeout de 60 segundos es de 25 a 50 por llamada — ver cotización múltiple.

Es el único campo pensado para comparar entre canales: siempre incluye impuestos. No necesitas (ni debes) agregarle nada antes de mostrarlo o compararlo entre ofertas.