requestItem method
- NsgDataRequestParams? filter,
- bool autoAuthorize = true,
- String tag = '',
- List<
String> ? loadReference, - String function = '',
- String method = 'GET',
- bool addCount = true,
- dynamic postData,
- bool autoRepeate = false,
- int autoRepeateCount = 1000,
- FutureOr<
bool> retryIf()?, - FutureOr<
void> onRetry()?, - NsgCancelToken? cancelToken,
Оснорвной метод запроса данных Выполняет запрос по стандартному методу, заданному в объекте Можно перекрыть для изменения логики запроса filter = доп. фильтр, особенное внимание следует обратить на его сво-во compare autoAuthorize - переход на авторизацию, если будет получен отказ в доступе tag - доп признак для кэширования loadReference - список полей для дочитывания, можно передавать через точку, null - будут дочитаны все поля ссылочного типа первого уровн, пустой массив - не будет дочитано ничего Обратите внимание, по умолчанию дочитываются все поля, что может негативно сказаться на производительности function - url вызываемого метода, если не задан, будет взят url данного объекта по умолчанию method - метод запроса. Рекомендуем всегда использовать POST из-за отсутствия ограничений на передаваемые параметры addCount - в фильтр будет добавлено ограничение считываемых объектов до одного postData - передаваемые данные. Не рекомендуется использовать напрямую autoRepeate - повторять ли запрос в случае ошибки связи autoRepeateCount - максимальное количество повторов retryIf - функция, вызываемая перед каждым повторным вызовом. Если вернет false, повторы будут остановлены onRetry - функция, вызываемая при каждом повторе запроса requestRegime - режим запроса. Позволяет определить для чего загружаются данные при перекрытии логики данного метода
Implementation
Future<T> requestItem(
{NsgDataRequestParams? filter,
bool autoAuthorize = true,
String tag = '',
List<String>? loadReference,
String function = '',
String method = 'GET',
bool addCount = true,
dynamic postData,
bool autoRepeate = false,
int autoRepeateCount = 1000,
FutureOr<bool> Function(Exception)? retryIf,
FutureOr<void> Function(Exception)? onRetry,
NsgCancelToken? cancelToken}) async {
NsgDataRequestParams? newFilter;
if (addCount) {
if (filter == null) {
newFilter = NsgDataRequestParams(count: 1);
} else {
newFilter = NsgDataRequestParams(
top: filter.top, count: 1, params: filter.params, sorting: filter.sorting, referenceList: filter.referenceList, compare: filter.compare);
}
}
var data = await requestItems(
filter: newFilter,
autoAuthorize: autoAuthorize,
tag: tag,
loadReference: loadReference,
function: function,
method: method,
postData: postData,
autoRepeate: autoRepeate,
autoRepeateCount: autoRepeateCount,
userRetryIf: _retryIfInternal,
userOnRetry: onRetry,
cancelToken: cancelToken);
if (data.isEmpty) {
return NsgDataClient.client.getNewObject(dataItemType) as T;
}
return data[0];
}