Chopper уже достаточно давно существует и был создан как аналог библиотеки Retrofit, которая активно используется на Android. Он использует генерацию кода для упрощения работы с HTTP-клиентом.
Для использования Chopper, необходимо создать сервисы для работы с Rest API:
part "my_service.chopper.dart";
@ChopperApi(baseUrl: "/todos")
abstract class MyService extends ChopperService {
static MyService create([ChopperClient? client]) =>
_$MyServiceService(client);
@Get()
Future<List<Todo>> getTodos();
@Post()
Future<void> addTodo({
@Body Map<String,dynamic> body,
});
}
Также необходимо создать класс самого клиента:
final chopper = ChopperClient(
baseUrl: "http://example.com/api",
services: [
MyService .service,
],
interceptor: [
MyInterceptor(),
],
);
Также для общей логики всех запросов можно использовать
Interceptor, аналог middleware на Backend. В Chopper существует Request и Response Interceptor’ы. class HeaderInterceptor extends RequestInterceptor{
@override
FutureOr<Request> onRequest(Request request)async {
return request.copyWith(
headers: {
…request.headers,
‘my_header’: ‘abc’
},
);
}
}Для прерывания запроса, например, с отсутствующим интернетом, можно просто выбросить исключение. При этом его нужно будет поймать и обработать в коде.
