Разбиение на страницы: Неверный параметр запроса - PullRequest
0 голосов
/ 05 января 2019

Я тестирую API Amadeus, следуя Amadeus Github tuto , чтобы ознакомиться с ним. Я не знал о нумерации страниц, и мне кажется, что с этим трудно справиться.

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 от предложения в предложении

Также я обнаружил, что вызовы на нумерацию страниц Amadeus , когда Си с успехом использовала такие же вызовы

... Мне интересно, как я могу правильно использовать эту функцию из библиотеки Amadeus.

Спасибо за чтение и помощь!

1 Ответ

0 голосов
/ 17 января 2019

Спасибо за сообщение об этой ошибке. Это было исправлено, теперь вы можете установить версию 2.0.1 Python SDK, чтобы получить исправление:

pip install amadeus

Основная причина : API, поддерживающие разбиение на страницы, используют параметр квадратной скобки для индексации страницы и смещение. Формат был неправильно закодирован методом urlencode из urllib при построении списка параметров URL.

Для следующего примера:

{'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 выполнен.

...