Хорошая практика API пагинации - PullRequest
0 голосов
/ 27 мая 2019

Моя основная функция:

def get_data():
    try:
        response = send_request_to_get_data()

        // will get one dict output looks like :
        {
          "data": ['some datas.....'],
          "next": "api/data?top=100&skip=200",
        }

        if response.status_code == 200:
            if response.json().get("next"):
                first_paginated_response = get_paginated_data(response.json().get("next"))

                if response.status_code == 200:
                    if first_paginated_response.json().get("next"):
                        second_paginated_response = get_paginated_data(response.json().get("next"))

                        if response.status_code == 200:
                           if second_paginated_response.json().get("next"):
                               print('again...again....again....again...again)


def send_request_to_get_data():
    return rq.get('https://example.com')


def get_paginated_data(paginated):
    url = "https://example.com/{next}".format(next=paginated)
    return rq.get(url)

Если в ответе «следующий» ключ, мне нужно отправить еще один запрос на API пагинации, но мой оператор if выглядит странно.

Каков хороший подход для этого?

1 Ответ

1 голос
/ 27 мая 2019

Вы можете использовать цикл while и сохранять данные следующим образом:

response = send_request_to_get_data()
data = response['data']
while response.status_code == 200 and response.json().get("next"):
    response = get_paginated_data(response.json().get("next"))
    data.extend(response['data'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...