分页:无效的查询参数

时间:2019-01-05 18:30:25

标签: python json pagination amadeus

我正在Amadeus Github tuto之后测试Amadeus的API,以使其熟悉。我不知道分页,似乎很难处理。

from amadeus import Client, ResponseError
from amadeus import Location
from json_encoder import json


def getFirst():
    response = amadeus.reference_data.locations.get(
        keyword='LON',
        subType=Location.ANY
    )
    return (response)

amadeus = Client(
    client_id=REPLACE_BY_YOUR_API_KEY,
    client_secret=REPLACE_BY_YOUR_API_SECRET
)

try:
    first = getFirst()
    next = amadeus.next(first)
    print(next.data)

except ResponseError as error:
    print(error)

第一个呼叫有效,但下一个呼叫(分页)我尝试使用相同的[400] [page] Invalid query parameter错误尝试不同的呼叫。

这是JSON from get in proposal

我也发现了Amadeus pagination calls,其中si成功使用了相同的呼叫方式

...我想知道如何正确使用Amadeus库中的此功能。

感谢阅读和帮助!

1 个答案:

答案 0 :(得分:0)

感谢您报告此错误。它已得到修复,现在您可以安装Python SDK的2.0.1版本以获取此修复程序:

  

pip安装amadeus

根本原因: 支持分页的API使用方括号参数来索引页面和 偏移量。格式没有通过urlencode方法正确编码 urllib在构建网址参数列表时。

对于以下示例:

{'longitude': 0.1278, 'latitude': 51.5074, 'page': {'offset': 10}}

它的编码为:

longitude=0.1278&latitude=51.5074&page={offset : 10}

代替:

longitude=0.1278&latitude=51.5074&page[offset]=10

新的私有方法_urlencode解析并准备字典,然后 对urlencode的实际调用已经完成。