requestItems method
- NsgDataRequestParams? filter,
- bool autoAuthorize = true,
- String tag = '',
- List<
String> ? loadReference, - String function = '',
- String method = 'GET',
- dynamic postData,
- bool autoRepeate = true,
- int autoRepeateCount = 10,
- FutureOr<
bool> userRetryIf()?, - FutureOr<
void> userOnRetry()?, - NsgCancelToken? cancelToken,
Запрос одного объекта. Для запроса списка объектов используйте requestItems Выполняет запрос по стандартному методу, заданному в бъекте Можно перекрыть для изменения логики запроса filter = доп. фильтр, особенное внимание следует обратить на его сво-во compare autoAuthorize - переход на авторизацию, если будет получен отказ в доступе tag - доп признак для кэширования loadReference - список полей для дочитывания, можно передавать через точку, null - будут дочитаны все поля ссылочного типа первого уровн, пустой массив - не будет дочитано ничего Обратите внимание, по умолчанию дочитываются все поля, что может негативно сказаться на производительности function - url вызываемого метода, если не задан, будет взят url данного объекта по умолчанию method - метод запроса. Рекомендуем всегда использовать POST из-за отсутствия ограничений на передаваемые параметры postData - передаваемые данные. Не рекомендуется использовать напрямую autoRepeate - повторять ли запрос в случае ошибки связи autoRepeateCount - максимальное количество повторов retryIf - функция, вызываемая перед каждым повторным вызовом. Если вернет false, повторы будут остановлены onRetry - функция, вызываемая при каждом повторе запроса
Implementation
Future<List<T>> requestItems({
NsgDataRequestParams? filter,
bool autoAuthorize = true,
String tag = '',
List<String>? loadReference,
String function = '',
String method = 'GET',
dynamic postData,
bool autoRepeate = true,
int autoRepeateCount = 10,
FutureOr<bool> Function(Exception)? userRetryIf,
FutureOr<void> Function(Exception)? userOnRetry,
NsgCancelToken? cancelToken,
}) async {
if (storageType == NsgDataStorageType.server) {
retryIf = retryIf;
if (autoRepeate) {
final r = RetryOptions(maxAttempts: autoRepeateCount, maxDelay: const Duration(seconds: 15));
return await r.retry(
() => _requestItems(
filter: filter,
autoAuthorize: autoAuthorize,
tag: tag,
loadReference: loadReference,
function: function,
method: method,
postData: postData,
externalCancelToken: cancelToken),
retryIf: _retryIfInternal,
onRetry: userOnRetry);
// onRetry: (error) => _updateStatusError(error.toString()));
} else {
return await _requestItems(
filter: filter,
autoAuthorize: autoAuthorize,
tag: tag,
loadReference: loadReference,
function: function,
method: method,
postData: postData,
externalCancelToken: cancelToken);
}
} else {
return await _requestItemsFromDb(filter: filter, tag: tag, loadReference: loadReference);
}
}