Comprensión de la búsqueda asincrónica para alquileres vacacionales
La API Vacation Rentals admite dos modos de búsqueda: sincrónico y asincrónico. El modo asíncrono devuelve resultados parciales rápidamente mientras los proveedores continúan respondiendo, lo que brinda a los usuarios una experiencia inicial más rápida.
Sincronización frente a modo asíncrono
| Característica | Sincronización (isasync: false) | Asíncrono (isasync: true) |
|---|---|---|
| Tiempo de respuesta inicial | Más lento (espera a todos los proveedores) | Más rápido (devuelve resultados disponibles inmediatamente) |
| Integridad de la respuesta | Todos los resultados en una sola respuesta | Resultados parciales, que se construyen con el tiempo |
| Se requiere encuesta | No | Sí |
| Campo de estado | "success" | "in_progress" luego "success" |
| Lo mejor para | Procesamiento en segundo plano, consultas por lotes | UI de búsqueda orientadas al usuario en tiempo real |
Cómo funciona el modo de sincronización
Con is_async: false (el valor predeterminado), la API espera a que todos los proveedores devuelvan resultados antes de responder.
{
"is_async": false
}Importante: Cuando se utiliza el modo de sincronización, si la respuesta devuelve status: "in_progress", esto significa que la solicitud expiró antes de que todos los proveedores terminaran. En este caso, debe volver a sondear el punto final con el mismo x-correlation-id para recuperar los resultados completos.
Flujo del modo de sincronización
1. POST /hotels/api/v2/properties/vacation-rentals
→ is_async: false
← { status: "success", data: { total: 142, hotels: [...] } }
Done — all results returned.
Cómo funciona el modo asíncrono
Con is_async: true, la API devuelve los resultados que estén disponibles de inmediato. Usted sondea el mismo punto final para obtener resultados actualizados a medida que responden más proveedores.
{
"is_async": true
}Flujo del modo asíncrono
1. POST /hotels/api/v2/properties/vacation-rentals
→ isasync: true, x-correlation-id: corrabc123
← { status: "in_progress", data: { total: 45, hotels: [...] } }
Partial results — show these to the user.
- POST /hotels/api/v2/properties/vacation-rentals
→ Same body, same x-correlation-id: corr_abc123
← { status: "in_progress", data: { total: 98, hotels: [...] } }
More results — update the UI.
- POST /hotels/api/v2/properties/vacation-rentals
→ Same body, same x-correlation-id: corr_abc123
← { status: "success", data: { total: 142, hotels: [...] } }
All results returned — stop polling.
Implementación de encuestas
Cuando utilice el modo asíncrono, implemente un bucle de sondeo que:
- Envía la solicitud de búsqueda.
- Verifica el campo
statusen la respuesta. - Si
"in_progress", espera brevemente y luego vuelve a enviar la misma solicitud con el mismo ID de correlación. - Si
"success", deja de sondear: todos los resultados están disponibles.
Ejemplo de JavaScript
async function searchVacationRentals(correlationId, searchBody) {
const url = 'https://uat.travelapi.ai/hotels/api/v2/properties/vacation-rentals?currency=USD&page=1&limit=50&amenities=true';
let status = 'in_progress';
let results = null;
while (status === 'in_progress') {
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-correlation-id': correlationId
},
body: JSON.stringify(searchBody)
});
results = await response.json();
status = results.status;
if (status === 'in_progress') {
// Display partial results to the user
displayResults(results.data.hotels);
// Wait 2-3 seconds before polling again
await new Promise(resolve => setTimeout(resolve, 2500));
}
}
// Final results
displayResults(results.data.hotels);
return results;
}
Ejemplo de Python
import requests
import time
def searchvacationrentals(correlationid, searchbody):
url = 'https://uat.travelapi.ai/hotels/api/v2/properties/vacation-rentals'
params = {'currency': 'USD', 'page': 1, 'limit': 50, 'amenities': 'true'}
headers = {
'Content-Type': 'application/json',
'x-correlation-id': correlation_id
}
status = 'in_progress'
results = None
while status == 'in_progress':
response = requests.post(url, params=params, headers=headers, json=search_body)
results = response.json()
status = results['status']
if status == 'in_progress':
print(f"Partial results: {results['data']['total']} properties found so far")
time.sleep(2.5)
print(f"Complete: {results['data']['total']} total properties")
return results
Mejores prácticas de sondeo
| Práctica | Recomendación |
|---|---|
| Intervalo de encuesta | Espere 2-3 segundos entre solicitudes |
| Encuestas máximas | Establecer un límite (por ejemplo, 10 intentos) para evitar bucles infinitos |
| Mostrar resultados parciales | Mostrar los resultados disponibles al usuario mientras continúa la encuesta |
| Indicador de carga | Muestra un indicador de progreso mientras status es "in_progress" |
| ID de correlación | Reutilice siempre el mismo x-correlation-id de la respuesta de autocompletar |
Elegir el modo correcto
| Caso de uso | Modo recomendado |
|---|---|
| Página de búsqueda orientada al usuario | Async: muestra los resultados a medida que llegan |
| Integración de API a API | Sincronización: implementación más sencilla, una solicitud |
| Aplicación móvil con control giratorio de carga | Async: rendimiento percibido más rápido |
| Procesamiento por lotes o exportación de datos | Sincronización: espere los resultados completos |
| Comparación de precios en muchos destinos | Sincronización: necesita datos completos para comparar |
Manejo de casos extremos
No se encontraron resultados
Si ningún alquiler vacacional coincide con los criterios de búsqueda, la respuesta devuelve un código de estado 404. Esto puede suceder tanto en modo sincronizado como asíncrono.
Tiempo de espera en modo de sincronización
Si la solicitud de sincronización caduca y devuelve status: "in_progress", trátela como una respuesta asíncrona y sondee los resultados restantes utilizando el mismo ID de correlación.
ID de correlación obsoleta
Los ID de correlación están vinculados a una solicitud de autocompletar específica. Si necesita buscar una nueva ubicación, vuelva a llamar a la función de autocompletar para obtener una nueva identificación de correlación. No reutilice los ID de correlación en búsquedas de diferentes ubicaciones.
Próximos pasos
Revise la lista completa de tipos de propiedades de alquiler vacacional admitidos y lo que ofrece cada tipo.