[flutter] 플러터 GET 요청의 응답을 캐싱하는 방법은 무엇인가요?

플러터에서 GET 요청의 응답을 캐싱하려면 다음과 같은 단계를 따를 수 있습니다.

1. http 패키지를 추가

먼저, 플러터 앱에서 HTTP 요청을 처리하기 위해 http 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 아래와 같이 http 패키지를 추가합니다:

dependencies:
  http: ^0.12.2

그리고 터미널에서 flutter packages get 명령을 실행하여 패키지를 다운로드 받습니다.

2. 캐시 로직 작성

다음으로, GET 요청의 응답을 캐싱하기 위한 로직을 작성해야 합니다. http 패키지의 get 함수를 사용하여 GET 요청을 수행할 때, headers 매개변수에 캐싱 관련 헤더를 추가하면 됩니다.

import 'package:http/http.dart' as http;

final cache = {};

Future<dynamic> getCachedData(String url) async {
  if (cache.containsKey(url)) {
    return cache[url];
  } else {
    final response = await http.get(url, headers: {'Cache-Control': 'max-age=3600'});
    if (response.statusCode == 200) {
      cache[url] = response.body;
      return response.body;
    } else {
      throw Exception('Failed to get data');
    }
  }
}

위의 코드에서 cache는 캐시 데이터를 저장할 맵입니다. getCachedData 함수는 주어진 URL을 통해 데이터를 가져오는데, 만약 데이터가 캐시에 이미 존재한다면, 저장된 데이터를 반환하고 그렇지 않다면 GET 요청을 수행하여 데이터를 가져옵니다. 이때 headers 매개변수에 Cache-Control 헤더를 설정하여 캐시 유효 기간을 지정할 수 있습니다. 위의 예시에서는 1시간 동안 캐시를 유지하도록 설정하였습니다.

3. 캐싱된 데이터 사용하기

이제 캐싱된 데이터를 사용할 수 있습니다. getCachedData 함수를 호출하고 반환된 데이터를 사용하면 됩니다.

void main() {
  getCachedData('https://api.example.com/data')
    .then((data) {
      // 캐싱된 데이터 사용
    })
    .catchError((error) {
      // 에러 처리
    });
}

위의 예시에서 getCachedData 함수에 요청할 URL을 전달하고, 반환된 데이터를 .then 블록에서 사용하거나 .catchError 블록에서 에러를 처리할 수 있습니다.

참고 자료