[flutter] Dio_http_cache와 함께 사용되는 Dio 패키지의 다른 기능들

Dio는 Dart 언어용으로 만들어진 강력한 HTTP 클라이언트 라이브러리로, 네트워크 요청을 보내고 응답을 받는 기능을 제공합니다. Dio 패키지를 사용하면 Dart 개발자들은 간편하게 서버와 데이터를 주고받을 수 있습니다.

Dio의 주요 기능

1. Interceptor(인터셉터)

인터셉터는 요청과 응답을 가로채고 조작할 수 있는 기능을 제공합니다. 이를 통해 인증, 로깅, 오류 처리 그리고 캐시와 같은 추가적인 기능을 쉽게 적용할 수 있습니다.

예시:

dio.interceptors.add(InterceptorsWrapper(
    onRequest: (options, handler) {
        // 요청을 처리하기 전의 로직
        return handler.next(options); // 요청 처리
    },
    onResponse: (response, handler) {
        // 응답을 처리한 후의 추가 로직
        return handler.next(response); // 응답 처리
    }
));

2. Dio_http_cache

Dio_http_cache 는 Dio의 확장 기능으로, 네트워크 요청에 대한 응답을 캐싱하여, 동일한 요청이 들어왔을 때 캐시에서 응답을 반환하며 네트워크 요청을 줄여줍니다.

예시:

dio.interceptors.add(DioCacheInterceptor(options: cacheOptions));

3. FormData 전송

Dio 는 폼 데이터를 간편하게 전송할 수 있는 기능을 제공합니다.

예시:

FormData formData = FormData.fromMap({
  'name': 'John',
  'age': 25,
});
Response response = await dio.post('/info', data: formData);

4. 파일 다운로드 및 업로드

Dio 를 사용하여 파일의 업로드 및 다운로드가 간편하게 처리될 수 있습니다.

예시:

Response response = await dio.download(
  'https://www.example.com/file/endpoint',
  savePath,
  onReceiveProgress: (received, total) {
    if (total != -1) {
      print((received / total * 100).toStringAsFixed(0) + "%");
    }
  },
);

5. 쿠키와 사용자 정의 헤더

Dio 를 사용하여 쿠키와 사용자 정의 헤더를 손쉽게 설정하고 사용할 수 있습니다.

예시:

Options options = Options(
  headers: {
    "auth": "token",
    "other_header": "other_value"
  },
);
Response response = await dio.get('/user', options: options);

결론

Dio 패키지는 다양한 옵션과 기능을 제공하여 네트워크 요청과 응답을 쉽게 다룰 수 있도록 도와줍니다. Dio_http_cache 는 Dio의 강력한 기능을 확장하여 캐싱을 통해 네트워크 성능을 향상시킬 수 있는 유용한 기능 중 하나입니다.