post<T> method

Future<T> post<T>(
  1. String endpoint, {
  2. required dynamic data,
  3. required T fromJson(
    1. Map<String, dynamic>
    ),
})

Implementation

Future<T> post<T>(
  String endpoint, {
  required dynamic data,
  required T Function(Map<String, dynamic>) fromJson,
}) async {
  try {
    final uri = _buildUri(endpoint, null);
    final String encodedData = jsonEncode(data);
    _logRequest('POST', uri, body: encodedData);

    final response = await _client.post(
      uri,
      headers: _getHeaders(),
      body: encodedData,
    );
    _logResponse(response);

    if (response.statusCode >= 200 && response.statusCode < 300) {
      return fromJson(jsonDecode(response.body));
    } else {
      throw Exception("Server returned code ${response.statusCode}");
    }
  } catch (e) {
    throw Exception(e.toString());
  }
}