[flutter] 플러터의 HTTP 통신 (API 통신) 처리 방법

플러터는 네트워크 통신을 위한 여러 가지 패키지를 제공하여 HTTP 통신 (API 통신)을 간단하게 처리할 수 있도록 도와줍니다. 이번 블로그 포스트에서는 플러터의 HTTP 통신을 처리하는 방법에 대해 알아보겠습니다.

1. HTTP 패키지 추가하기

먼저, 플러터에서 HTTP 통신을 사용하기 위해 http 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일을 열고 dependencies 섹션에 다음 코드를 추가하세요.

dependencies:
  http: ^0.13.3

저장한 후, 터미널에서 아래 명령어를 실행하여 패키지를 다운로드하세요.

flutter pub get

2. HTTP 요청 보내기

이제 http 패키지를 사용하여 HTTP 요청을 보내는 방법에 대해 알아보겠습니다.

GET 요청 보내기

GET 요청은 get 메서드를 사용하여 보낼 수 있습니다. 예를 들어, 서버로부터 JSON 데이터를 가져오기 위한 GET 요청을 보내는 코드는 다음과 같습니다.

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

Future getData() async {
  var response = await http.get(Uri.parse('https://api.example.com/data'));
  
  if (response.statusCode == 200) {
    // 요청이 성공하면 JSON 데이터를 파싱하여 사용할 수 있습니다.
    var data = json.decode(response.body);
    return data;
  } else {
    // 요청이 실패하면 오류를 처리할 수 있습니다.
    throw Exception('Failed to load data');
  }
}

POST 요청 보내기

POST 요청은 post 메서드를 사용하여 보낼 수 있습니다. 예를 들어, 서버로 데이터를 보내기 위한 POST 요청을 보내는 코드는 다음과 같습니다.

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

Future postData() async {
  var url = Uri.parse('https://api.example.com/data');
  var response = await http.post(url, body: {'name': 'John', 'age': '30'});
  
  if (response.statusCode == 201) {
    // 요청이 성공하면 응답 데이터를 사용할 수 있습니다.
    var data = json.decode(response.body);
    return data;
  } else {
    // 요청이 실패하면 오류를 처리할 수 있습니다.
    throw Exception('Failed to post data');
  }
}

3. 예외 처리하기

HTTP 요청에서 발생하는 예외를 처리하는 방법에 대해 알아보겠습니다. 위의 예제 코드에서는 요청이 실패했을 때 Exception을 발생시켰지만, 더 세부적인 예외 처리를 원한다면 http 패키지의 HttpException을 사용할 수도 있습니다. 예를 들어, 아래 코드에서는 HttpException이 발생했을 때 특정 오류 메시지를 반환하도록 처리하고 있습니다.

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

Future getData() async {
  try {
    var response = await http.get(Uri.parse('https://api.example.com/data'));
    
    if (response.statusCode == 200) {
      // 요청이 성공하면 JSON 데이터를 파싱하여 사용할 수 있습니다.
      var data = json.decode(response.body);
      return data;
    } else {
      // 요청이 실패하면 오류 메시지를 반환합니다.
      throw http.ClientException('Failed to load data');
    }
  } catch (e) {
    // 예외가 발생하면 예외 메시지를 반환합니다.
    throw Exception(e.toString());
  }
}

마무리

위에서 설명한 방법을 통해 플러터에서 HTTP 통신 (API 통신)을 처리할 수 있습니다. HTTP 요청을 보내고 응답을 처리하는 방법에 대해 이해하고, 예외 처리도 함께 고려하는 것이 중요합니다. 플러터의 HTTP 패키지를 활용하여 쉽고 효율적으로 API 요청을 처리할 수 있습니다.

더 많은 정보를 원한다면 공식 플러터 문서를 참조하세요.