[flutter] 플러터에서의 데이터 통신을 위한 HTTP 요청 방법

플러터는 Google에서 개발한 크로스 플랫폼 모바일 애플리케이션 개발 프레임워크로, 다양한 기능을 쉽게 구현할 수 있습니다. 데이터 통신은 모바일 애플리케이션에서 핵심 기능 중 하나이며, 플러터에서는 HTTP 패키지를 사용하여 간편하게 HTTP 요청을 보낼 수 있습니다. 이번 포스트에서는 플러터에서 HTTP 요청을 보내는 방법에 대해 알아보겠습니다.

1. HTTP 패키지 추가

먼저, HTTP 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일을 열고, dependencies 섹션에 다음과 같이 http 패키지를 추가합니다:

dependencies:
  http: ^0.13.3

추가한 뒤에는 패키지를 설치하기 위해 터미널에서 flutter pub get 명령어를 실행합니다.

2. HTTP 요청 보내기

HTTP 패키지를 추가한 후에는 http를 import하여 사용할 수 있습니다. 아래는 GET 요청을 보내는 예제입니다:

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

Future<void> fetchData() async {
  final response = await http.get(Uri.parse('https://api.example.com/data'));

  if (response.statusCode == 200) {
    final responseData = jsonDecode(response.body);
    // 데이터 처리 로직 작성
  } else {
    throw Exception('Failed to load data');
  }
}

GET 요청을 보내기 위해서는 http.get() 메서드를 사용하고, 요청하는 URL을 Uri.parse()로 파싱하여 전달합니다. response 객체를 통해 응답을 확인하고, 응답이 성공했을 경우에는 response.body를 JSON 디코딩하여 데이터를 처리할 수 있습니다.

POST 요청을 보내는 예제는 아래와 같습니다:

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

Future<void> sendData() async {
  final response = await http.post(
    Uri.parse('https://api.example.com/data'),
    headers: {'Content-Type': 'application/json'},
    body: jsonEncode({'key': 'value'}),
  );

  if (response.statusCode == 201) {
    // 데이터 전송 성공
  } else {
    throw Exception('Failed to send data');
  }
}

POST 요청을 보내기 위해서는 http.post() 메서드를 사용합니다. 요청하는 URL뿐만 아니라, 헤더와 바디를 전달할 수 있습니다. 위의 예제에서는 JSON 형식의 데이터를 전송하기 위해 Content-Type 헤더를 설정하고, 바디에는 jsonEncode()를 사용하여 JSON 문자열로 변환한 데이터를 전달하였습니다.

3. 예외 처리

HTTP 요청에서 예외처리는 필수적입니다. 예를 들어, 인터넷 연결이 되지 않았거나 서버로부터 오류 응답이 왔을 때, 프로그램이 적절히 처리하도록 예외를 잘 처리해야 합니다. 위의 예제 코드에서는 response.statusCode를 확인하여 성공 또는 실패 여부를 판단하고, 실패 시에는 예외를 던지도록 처리하였습니다.


참고 자료