net_kit 1.3.1 net_kit: ^1.3.1 copied to clipboard
Network Kit is a library that provides a set of tools to work with network requests.
NetKit #
NetKit is a Dart package designed to handle HTTP requests and responses efficiently.
Contents #
Inspiration #
NetKit was inspired by the popular Vexana package by VB10
**Features #
- Supports various HTTP methods (GET, POST, PUT, DELETE, PATCH)
- Configurable base URLs for development and production
- Logging of network requests and responses
- Error handling and response validation
- Parsing responses into models or lists of models or void using
INetKitModel
Getting started #
Initialization #
Initialize the NetKitManager with the parameters:
import 'package:net_kit/net_kit.dart';
final netKitManager = NetKitManager(
baseUrl: 'https://api.<URL>.com',
devBaseUrl: 'https://dev.<URL>.com',
loggerEnabled: true,
testMode: true,
errorStatusCodeKey: 'status',
errorMessageKey: 'description',
);
Sending requests #
Request a Single Model
Future<RandomUserModel> getRandomUser() async {
try {
final result = await netKitManager.requestModel<RandomUserModel>(
path: '/api',
method: RequestMethod.get,
model: const RandomUserModel(),
);
return result;
}
/// Catch the ApiException and handle it
on ApiException catch (e) {
/// Handle the error: example is to throw the error
throw Exception(e.message);
}
}
Request a List of Models
Future<List<ProductModel>> getProducts() async {
try {
final result = await netKitManager.requestList<ProductModel>(
path: '/products',
method: RequestMethod.get,
model: const ProductModel(),
);
return result;
}
/// Catch the ApiException and handle it
on ApiException catch (e) {
/// Handle the error: example is to throw the error
throw Exception(e.message);
}
}
Send a void Request
Future<void> deleteProduct() async {
try {
await netKitManager.requestVoid<ProductModel>(
path: '/products',
method: RequestMethod.delete,
);
return;
}
/// Catch the ApiException and handle it
on ApiException catch (e) {
/// Handle the error: example is to throw the error
throw Exception(e.message);
}
}
Planned Enhancements #
- ❌ Internationalization support for error messages
- ❌ No internet connection handling
- ❌ Multi-part form data support
- ❌ Refresh Token implementation
- ❌ Enhance logging capabilities with customizable log levels
- ❌ Provide more examples and use cases in the documentation
- ❌ Implement retry logic for failed requests
- ❌ Add more tests to ensure the package is robust and reliable
Contributing #
Contributions are welcome! Please open an issue or submit a pull request.
License #
This project is licensed under the MIT License.