delete method
Future<ClientResult>
delete({
- required String url,
- Map<
String, dynamic> ? body, - Map<
String, String> ? headers, - Duration? timeout,
- ClientType? clientType,
- String? cancelKey,
- bool validateStatus(
- int?
- OnSuccess? onSuccess,
- OnError? onError,
- OnHttpError? onHttpError,
- Map<
int, OnStatus> ? onStatus, - Set<
int> ? successCodes, - Set<
int> ? errorCodes,
Performs a DELETE request and returns the result as a tuple.
Optionally accepts callbacks for convenient response handling. When callbacks are provided, they are invoked based on the response status code, but the result tuple is still returned.
Implementation
Future<ClientResult> delete({
required String url,
Map<String, dynamic>? body,
Map<String, String>? headers,
Duration? timeout,
ClientType? clientType,
String? cancelKey,
bool Function(int?)? validateStatus,
// Optional callbacks
OnSuccess? onSuccess,
OnError? onError,
OnHttpError? onHttpError,
Map<int, OnStatus>? onStatus,
Set<int>? successCodes,
Set<int>? errorCodes,
}) async {
final fullUrl = _buildUrl(url);
final request = ClientRequest(
url: fullUrl,
method: 'DELETE',
headers: {...config.defaultHeaders, ...?headers},
body: body,
);
final processedRequest = await _runRequestInterceptors(request);
if (processedRequest == null) {
final result = (
null,
ClientException(
message: 'Request cancelled by interceptor',
url: fullUrl,
),
);
_handleCallbacks(
response: result.$1,
error: result.$2,
onSuccess: onSuccess,
onError: onError,
onHttpError: onHttpError,
onStatus: onStatus,
successCodes: successCodes,
errorCodes: errorCodes,
);
return result;
}
final result = await _executeWithRetry(
request: processedRequest,
execute: () => _performDelete(
processedRequest,
timeout,
clientType,
cancelKey,
validateStatus,
),
);
_handleCallbacks(
response: result.$1,
error: result.$2,
onSuccess: onSuccess,
onError: onError,
onHttpError: onHttpError,
onStatus: onStatus,
successCodes: successCodes,
errorCodes: errorCodes,
);
return result;
}