본문 바로가기
Dart/Dart Programming language

[추가학습] Dart 간단한 프로젝트 개발 / 중급: REST API 클라이언트 구현 (API 호출 및 데이터 처리)

by Maccrey Coding 2024. 9. 13.
728x90
반응형

 

Dart는 현대적인 프로그래밍 언어로, 웹과 모바일 애플리케이션 개발에서 널리 사용됩니다.

이 블로그 포스트에서는 Dart를 사용하여 REST API 클라이언트를 구현하고 데이터를 처리하는 방법을 단계별로 설명하겠습니다.

REST API 클라이언트를 통해 외부 API와 상호작용하고, 받은 데이터를 애플리케이션에서 유용하게 활용할 수 있습니다.

1. 프로젝트 준비하기

먼저, Dart SDK가 설치되어 있어야 합니다. 설치가 되어 있지 않다면, 아래 링크에서 설치 가이드를 참고하여 설치해 주세요.

프로젝트를 생성하려면 터미널에서 아래 명령어를 입력합니다.

dart create rest_api_client

생성된 프로젝트 디렉토리로 이동합니다.

cd rest_api_client

2. HTTP 패키지 추가하기

Dart에서 HTTP 요청을 보내려면 http 패키지를 사용합니다. pubspec.yaml 파일을 열어 dependencies 섹션에 http 패키지를 추가합니다.

dependencies:
  http: ^0.14.0

패키지를 설치하려면 터미널에서 아래 명령어를 입력합니다.

dart pub get

3. REST API 클라이언트 구현하기

다음은 Dart를 사용하여 간단한 REST API 클라이언트를 구현하는 방법입니다. 예를 들어, JSONPlaceholder라는 무료 API를 사용하여 가상의 사용자 정보를 가져오는 클라이언트를 만들어 보겠습니다.

bin 폴더 내에 rest_api_client.dart 파일을 생성하고, 아래 코드를 입력합니다.

import 'dart:convert'; // JSON 디코딩을 위한 패키지
import 'package:http/http.dart' as http; // HTTP 요청을 위한 패키지

Future<void> fetchUserData() async {
  // API 엔드포인트 URL
  final url = 'https://jsonplaceholder.typicode.com/users';

  try {
    // HTTP GET 요청을 보내고 응답을 받습니다.
    final response = await http.get(Uri.parse(url));

    // 요청이 성공했는지 확인합니다.
    if (response.statusCode == 200) {
      // 응답 본문을 JSON으로 디코딩합니다.
      final List<dynamic> data = json.decode(response.body);

      // 데이터를 출력합니다.
      for (var user in data) {
        print('이름: ${user['name']}');
        print('이메일: ${user['email']}');
        print('주소: ${user['address']['street']}, ${user['address']['city']}');
        print('---');
      }
    } else {
      print('API 요청 실패: ${response.statusCode}');
    }
  } catch (e) {
    print('예외 발생: $e');
  }
}

void main() {
  fetchUserData();
}

이 코드는 jsonplaceholder API에서 사용자 정보를 가져와 출력합니다. http.get 메서드를 사용하여 GET 요청을 보내고, 응답을 JSON으로 디코딩하여 사용자 정보를 출력합니다. 에러가 발생하면 예외를 처리하여 사용자에게 적절한 메시지를 출력합니다.

4. 실행 및 결과 확인하기

터미널에서 다음 명령어를 입력하여 애플리케이션을 실행합니다.

dart bin/rest_api_client.dart

정상적으로 실행되면, 콘솔에 사용자 정보가 출력됩니다. 이를 통해 API 요청과 응답 처리, 데이터 출력 방법을 확인할 수 있습니다.

5. 데이터 처리 및 활용

받은 데이터를 애플리케이션에서 더 유용하게 활용하기 위해, 데이터를 객체로 변환하거나 특정 필터링을 적용할 수 있습니다.

예를 들어, 사용자 목록을 특정 기준으로 정렬하거나, 특정 사용자만 필터링하여 표시하는 등의 작업을 추가할 수 있습니다.

class User {
  final String name;
  final String email;
  final String address;

  User(this.name, this.email, this.address);

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      json['name'],
      json['email'],
      '${json['address']['street']}, ${json['address']['city']}',
    );
  }
}

Future<void> fetchAndProcessUserData() async {
  final url = 'https://jsonplaceholder.typicode.com/users';
  try {
    final response = await http.get(Uri.parse(url));

    if (response.statusCode == 200) {
      final List<dynamic> data = json.decode(response.body);
      List<User> users = data.map((json) => User.fromJson(json)).toList();

      for (var user in users) {
        print('이름: ${user.name}');
        print('이메일: ${user.email}');
        print('주소: ${user.address}');
        print('---');
      }
    } else {
      print('API 요청 실패: ${response.statusCode}');
    }
  } catch (e) {
    print('예외 발생: $e');
  }
}

이 코드는 JSON 데이터를 User 객체로 변환하여 보다 구조적으로 데이터를 처리합니다.

 

 

이 블로그 포스트에서는 Dart를 사용하여 REST API 클라이언트를 구현하고 데이터를 처리하는 방법을 살펴보았습니다.

API와의 상호작용을 통해 외부 데이터를 애플리케이션에서 효과적으로 활용할 수 있는 방법을 익히셨길 바랍니다.

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

728x90
반응형