You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NestJs中为Amadeus API的hotels/by-city端点实现分页?

Amadeus hotels/by-city 无分页时的前端分页实现方案

方案一:全量获取后做分页(后端/前端处理均可)

  • 适用场景:目标城市酒店数量不多(几百家以内),API返回数据量可控
  • 实现步骤:
    1. 你的NestJs服务端先调用Amadeus API拉取该城市的全部酒店数据
    2. 后端处理:接收前端传的page和pageSize参数,对全量数据做切片(比如data.slice((page-1)*pageSize, page*pageSize)),只返回当前页的数据
    3. 前端处理:直接把全量数据返回给前端,用前端框架自带的分页组件(比如AntD的Pagination、ElementUI的Pagination)渲染分页
  • 利弊:
    • 好处:代码逻辑简单,不用折腾额外的API调用
    • 坏处:如果酒店数量上千,一次性拉取会拖慢首次加载速度,还可能触发Amadeus的API限流

方案二:用API筛选参数实现「伪分页」

  • 适用场景:目标城市酒店数量多,全量拉取不现实
  • 实现步骤:
    1. 利用Amadeus hotels/by-city支持的筛选参数(比如starRating、priceRange、propertyCategory),把酒店拆成多个批次获取
    2. 在NestJs里存一个临时数据集,分批调用API拿不同筛选条件下的酒店,合并后再按前端的分页请求返回对应数据
    3. 举个例子:先拉5星酒店,再拉4星,直到把所有星级的酒店都拉完,再统一处理分页
  • 利弊:
    • 好处:避免一次性拉大量数据,减少带宽消耗和限流风险
    • 坏处:要处理多批次API调用的异步逻辑,而且筛选条件可能没法覆盖所有酒店,存在漏数据的可能

方案三:缓存全量数据+后端分页

  • 适用场景:酒店数据更新慢(比如每天更一次),前端分页请求频繁
  • 实现步骤:
    1. 用NestJs的定时任务(@nestjs/schedule)定期调用Amadeus API拉全量数据,存到Redis这类缓存服务里
    2. 前端发分页请求时,直接从缓存里取数据,处理分页后返回
    3. 设置缓存过期时间,定期更新保证数据不会太旧
  • 利弊:
    • 好处:首次加载后,后续分页请求响应快,还能减少对Amadeus API的调用次数
    • 坏处:需要额外搭缓存服务,缓存更新期间可能出现数据不一致的情况

内容的提问来源于stack exchange,提问作者Muhammad Kashif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:37:05