Dart Call API

A Dart package for making HTTP requests to an API and handling the responses. It supports GET, POST, PUT, PATCH, and DELETE methods.


  • Supports GET, POST, PUT, PATCH, and DELETE HTTP methods.
  • Provides a method to parse the JSON response from the server into a custom data type.
  • Includes error handling functionality, throwing an CallApiException whenever an error occurs during an API call.
  • Implemented as a singleton to ensure only one instance exists for each base URL, allowing for efficient reuse of the instances across the application.

Getting Started

First, add the callapi package to your pubspec dependencies.

To import callapi, add the following line to your Dart code:

import 'package:callapi/callapi.dart';


Here's a simple example of how to use the callapi package:

void main() async {
  // Create an CallApi instance for a specific base URL
  CallApi api = CallApi(baseUrl: 'https://jsonplaceholder.typicode.com/');

  // Define a function to parse a JSON string into a Map
  Map<String, dynamic> jsonParser(String jsonString) {
    return jsonDecode(jsonString);

  // Make a GET request
  Map<String, dynamic> getResponse = await api.request(
    path: 'posts/1',
    method: HttpMethod.get,
    jsonParser: jsonParser,

  print('GET response: $getResponse');

  // Make a POST request
  Map<String, dynamic> postResponse = await api.request(
    path: 'posts',
    method: HttpMethod.post,
    body: {'title': 'foo', 'body': 'bar', 'userId': 1},
    jsonParser: jsonParser,

  print('POST response: $postResponse');

Please note that you need to handle the errors (like CallApiException) in a try-catch block in a real-world scenario. Also, you would usually parse the JSON into a more specific data type rather than a Map<String, dynamic>.


This project is licensed under the MIT License - see the LICENSE file for details.