В последнее время я тону в двух школах мысли о назначении курсора для подкачки:
Курсор содержит только свою позицию (например, последний идентификатор элемента, последний созданный в ...).
Таким образом, сервер может обслуживать любую комбинацию курсора и параметра запроса.
Например:
- Первый запрос:
?queryParam=X&cursor=
, сервер отвечает cursor=C1
- Второй запрос:
?queryParam=Y&cursor=C1
, сервер все еще может обработать этот запрос с новым параметром запроса (даже если cursor=C1
связан с параметром запроса X)
Курсор содержит оригинальные параметры запроса.При указании курсора другие параметры запроса игнорируются.
То есть, если запрос с несовместимыми параметрами запроса <-> пара курсоров, сервер может игнорировать параметры запроса или даже отвечает с ошибкой
- Первый запрос:
?queryParam=X&cursor=
, сервер отвечает cursor=C1
, который кодирует queryParam=X
- Второй запрос:
?queryParam=Y&cursor=C1
, извлечение сервера queryParam=X
из cursor=C1
и игнорирование queryParam=Y
из запроса.
Каков предпочтительный подход к созданию курсора в отношении двух вышеупомянутых вариантов?
В последний раз, когда я проверяю, API Google (в частности, Gmail API :: list messages)) использовать первый подход.