onResponse method
- Response response,
- ResponseInterceptorHandler handler
override
Called when the response is about to be resolved.
Implementation
@override
void onResponse(Response response, ResponseInterceptorHandler handler) {
final method = response.requestOptions.method;
final uri = response.requestOptions.uri;
final parameters = response.requestOptions.queryParameters.length;
final bodyLength = response.requestOptions.data?.length;
final requestLog = [
method,
"${uri.origin}${uri.path}",
if (parameters > 0) "$parameters param${parameters != 1 ? 's' : ''}",
if (bodyLength is int)
"${NumberFormat.compact().format(bodyLength)}B body",
].join(' ');
final statusCode = response.statusCode;
final contentType = response.headers
.value(HttpHeaders.contentTypeHeader)
?.split(';')
.first;
final contentLength =
int.tryParse(
response.headers.value(HttpHeaders.contentLengthHeader) ?? '',
) ??
response.data.length ??
0;
final cookies = response.headers[HttpHeaders.setCookieHeader]?.length ?? 0;
final responseLog = [
statusCode,
if (contentType != null) contentType,
if (contentLength > 0) '${NumberFormat.compact().format(contentLength)}B',
if (cookies > 0) "$cookies cookie${cookies != 1 ? 's' : ''}",
].join(' ');
log("$requestLog => $responseLog", name: 'HTTP');
handler.next(response);
}