requestId function
Creates middleware that provides a request ID for the current request.
Implementation
Middleware requestId({
String headerName = 'x-request-id',
FutureOr<String> Function(Event event)? generator,
bool trustIncoming = true,
}) {
return (event, next) async {
final incomingValue = event.request.headers.get(headerName);
final selectedId = switch ((trustIncoming, incomingValue)) {
(true, final String value) when value.isNotEmpty => value,
_ => await (generator?.call(event) ?? _defaultRequestIdGenerator()),
};
event.locals.set(#requestId, selectedId);
final response = await next();
if (!response.headers.has(headerName)) {
response.headers.set(headerName, selectedId);
}
return response;
};
}