调用Amadeus reference-data.locations接口使用非英文关键词报错如何解决
Amadeus reference-data.locations 接口非英文关键词查询问题解答
核心结论
Amadeus 自助服务API的reference-data.locations接口本身不支持非英文关键词查询,和编码格式无关。
具体说明
- 接口官方对
keyword参数的输入规则做了明确限制:仅支持传入英文城市名、英文机场名、IATA三字码这三类有效值,中文等其他语种的地名输入都会触发报错,属于接口的原生限制。 - 无需对中文关键词做额外编码尝试:无论将中文转换为URL编码、UTF-8转义字符串等格式传入,接口都不会识别对应内容,依然会返回参数错误或空结果。
- 可行的落地方案:在业务层新增中文地名映射逻辑,提前维护中文城市/机场名到英文名称或IATA码的映射关系,用户输入中文后先匹配得到合规的参数值,再传入接口发起请求即可。
简易示例代码:
// 中文城市名转IATA码映射表,可根据业务需求扩展 const zhCityToIata = { '北京': 'BJS', '上海': 'SHA', '广州': 'CAN', '深圳': 'SZX' } // 接口调用逻辑 async function queryCityLocation(zhCityName) { const keyword = zhCityToIata[zhCityName] || zhCityName try { const res = await amadeus.referenceData.locations.get({ subType: 'CITY', keyword: keyword }) return res.data } catch (err) { console.error('请求失败', err) } }
内容的提问来源于stack exchange,提问作者noobular
相关产品推荐
相关产品推荐

