body method

Future<String> body()

Returns a Future containing the body as a String.

Implementation

Future<String> body() async {
  const requestBodyKey = 'dart_frog.request.body';
  final bodyFromContext =
      _request.context[requestBodyKey] as Completer<String>?;
  if (bodyFromContext != null) return bodyFromContext.future;

  final completer = Completer<String>();
  try {
    _request = _request.change(
      context: {..._request.context, requestBodyKey: completer},
    );
    completer.complete(await _request.readAsString());
  } catch (error, stackTrace) {
    completer.completeError(error, stackTrace);
  }

  return completer.future;
}