net_kit 2.0.0-dev.1 net_kit: ^2.0.0-dev.1 copied to clipboard
Network Kit is a library that provides a set of tools to work with network requests.
Contents #
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 #
Initialize #
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,
);
Configure the model #
Requests such as: requestModel
andrequestList
require the model to
extend INetKitModel
in order to be used with the NetKitManager.
class TodoModel extends INetKitModel<TodoModel> {}
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(
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 #
Feature | Status |
---|---|
Internationalization support for error messages | ✅ |
No internet connection handling | ✅ |
Provide basic example | ✅ |
Provide more examples and use cases in the documentation | |
Multi-part form data support | |
Refresh Token implementation | |
Enhance logging capabilities with customizable log levels | |
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.