Example: Dart Code:

class YourSuccessResponseModel {
  final String field1;
  final int field2;
  //etc...

  YourSuccessResponseModel({
    required this.field1,
    required this.field2,
  });

  factory YourSuccessResponseModel.fromJson(Map<dynamic, dynamic> json) => YourSuccessResponseModel(
    field1: json['key_1'],
    field2: json['key_2'],
  );
}

// [response] will be either [YourSuccessResponseModel] or [ErrorCodeAndMessage]
final dynamic response = await parseAPIResponse<YourSuccessResponseModel>(
      response: post(
        tag: 'forgotPasswordRequestOTP',
        url: AppData.forgotPasswordRequestOtpURL,
        body: jsonEncode(body),
      ),
      fromJson: YourSuccessResponseModel.fromJson,
      onFailure: (ErrorCodeAndMessage error) {
        // TODO
      },
      onSuccess: (YourSuccessResponseModel success) {
        // TODO
      },
      defaultErrorMessage: 'This default error message will be used when the error cannot be detected.',
    );

Libraries

http_simple