handleRequest method

  1. @override
Future<ApiResponse> handleRequest(
  1. ApiRequest request
)

Implementation

@override
Future<ApiResponse> handleRequest(ApiRequest request) async {
  try {
    var result = await before(request);
    if (result == null) {
      switch (request.method) {
        case ApiRequestMethod.GET:
          result = await get(request);
          break;
        case ApiRequestMethod.POST:
          result = await post(request);
          break;
        case ApiRequestMethod.PUT:
          result = await put(request);
          break;
        case ApiRequestMethod.PATCH:
          result = await patch(request);
          break;
        case ApiRequestMethod.DELETE:
          result = await delete(request);
          break;
      }
    }

    return ApiResponse.dynamic(result);
  } on ApiRequestException catch (e) {
    // catch exceptions here to allow middleware to handle result
    return e.toResponse();
  } catch (e, stack) {
    resolve<LogService>().error(
      'Error while handling request to "${request.route}".',
      error: e,
      trace: stack,
      sender: 'DataHub',
    );

    // catch exceptions here to allow middleware to handle result
    if (resolve<ConfigService>().environment == Environment.dev) {
      return DebugResponse(e, stack, 500);
    } else {
      return ApiRequestException.internalError('Internal Server Error')
          .toResponse();
    }
  }
}