request method
Future
request({
- required String endpoint,
- HTTPMethod method = HTTPMethod.get,
- Map<
String, dynamic> ? parameters,
Implementation
Future<dynamic> request({
required String endpoint,
HTTPMethod method = HTTPMethod.get,
Map<String, dynamic>? parameters,
}) async {
final url = Uri.parse("$baseURL$endpoint");
try {
http.Response response;
switch (method) {
case HTTPMethod.get:
Uri uri = url.replace(
queryParameters: parameters?.map((k, v) => MapEntry(k, v.toString())),
);
response = await http.get(uri, headers: headers);
break;
case HTTPMethod.post:
response = await http.post(url,
headers: headers, body: jsonEncode(parameters));
break;
case HTTPMethod.put:
response = await http.put(url,
headers: headers, body: jsonEncode(parameters));
break;
case HTTPMethod.delete:
response = await http.delete(url,
headers: headers, body: jsonEncode(parameters));
break;
case HTTPMethod.patch:
response = await http.patch(url,
headers: headers, body: jsonEncode(parameters));
break;
default:
throw Exception("HTTP method not implemented in Dart version");
}
if (response.statusCode >= 200 && response.statusCode < 300) {
return jsonDecode(response.body);
} else {
throw Exception(
"Invalid response: ${response.statusCode}, ${response.body}");
}
} catch (e) {
throw Exception("Request failed: $e");
}
}