[flutter] 플러터 Dio에서의 네트워크 통신 방법

Dio는 Flutter 애플리케이션에서 강력하고 효율적인 네트워크 통신을 달성하기 위한 인기있는 HTTP 클라이언트 라이브러리입니다. 이 블로그에서는 Dio를 사용하여 Flutter 애플리케이션에서 네트워크 통신을 구축하는 방법을 살펴 보겠습니다.

Dio 라이브러리 추가

dependencies:
  dio: ^4.0.0

pubspec.yaml 파일의 dependencies 섹션에 Dio 라이브러리를 추가합니다. 그런 다음 터미널에서 flutter pub get 명령을 실행하여 라이브러리를 프로젝트에 추가합니다.

네트워크 요청 만들기

Dio를 사용하여 네트워크 요청을 만들려면 먼저 Dio 인스턴스를 만들어야 합니다. 그런 다음 해당 인스턴스를 사용하여 GET, POST 등의 HTTP 요청을 수행할 수 있습니다.

import 'package:dio/dio.dart';

void fetchData() async {
  Dio dio = Dio();
  Response response = await dio.get('https://api.example.com/data');
  print(response.data);
}

위의 예제에서는 fetchData 함수가 Dio 인스턴스를 생성하고 get 메서드를 사용하여 API 엔드포인트에서 데이터를 가져오는 방법을 보여줍니다.

요청 매개변수 및 헤더 추가

Dio를 사용하면 매개변수와 헤더를 추가하여 HTTP 요청을 구성할 수 있습니다.

void postData() async {
  Dio dio = Dio();
  Map<String, dynamic> data = {
    'name': 'John Doe',
    'email': 'johndoe@example.com'
  };
  Options options = Options(headers: {
    'Authorization': 'Bearer token'
  });
  Response response = await dio.post('https://api.example.com/post', data: data, options: options);
  print(response.data);
}

위의 예제에서는 postData 함수가 POST 요청을 수행하고 데이터 및 헤더를 추가하는 방법을 보여줍니다.

요청 취소 및 타임아웃

Dio를 사용하여 네트워크 요청을 취소하거나 타임아웃을 설정할 수 있습니다.

void cancelRequest() {
  Dio dio = Dio();
  CancelToken cancelToken = CancelToken();
  dio.get('https://api.example.com/data', cancelToken: cancelToken)
      .then((response) => print(response.data))
      .catchError((error) {
    if (CancelToken.isCancel(error)) {
      print('Request cancelled');
    }
  });

  cancelToken.cancel('Cancelled');
}

위의 예제에서는 cancelRequest 함수가 요청을 취소하는 방법을 보여줍니다.

Dio를 사용한 네트워킹은 강력하고 유연하며 효율적인 방법으로 Flutter 애플리케이션에서 API와 통신합니다. Dio를 활용하여 안정적이고 빠른 네트워크 통신을 구현하여 애플리케이션의 성능을 향상시킬 수 있습니다.

더 많은 Dio의 기능과 세부적인 사용법은 Dio 공식 문서에서 확인할 수 있습니다.