format method
Content negotiation helper.
Example:
res.format({
'json': () => res.json(data),
'html': () => res.view('index', data),
});
Implementation
Future<void> format(Map<String, Function> formats) async {
final accept = _raw.headers.value(HttpHeaders.acceptHeader) ?? '';
if (accept.contains('application/json') && formats.containsKey('json')) {
await formats['json']!();
} else if (accept.contains('text/html') && formats.containsKey('html')) {
await formats['html']!();
} else {
// Default to first format or json
if (formats.isNotEmpty) {
await formats.values.first();
} else {
status(406).send('Not Acceptable');
}
}
}