[dart] HTTP 요청 시에 범용적인 API 클라이언트 만들기

Dart 언어를 사용하여 HTTP 요청을 보내고 API 클라이언트를 만드는 것은 매우 중요합니다. 여러 API 엔드포인트로부터 데이터를 가져오고 보내는 기능은 많은 애플리케이션에서 필수적입니다. Dart는 HTTP 요청을 보내는 데 사용할 수 있는 풍부한 기능들을 제공하고 있습니다. 또한 범용적으로 사용 가능한 API 클라이언트 클래스를 만들어서 코드를 보다 모듈식으로 유지할 수 있습니다.

필요한 패키지 가져오기

Dart에서 HTTP 요청을 보내기 위해서는 http 패키지가 필요합니다. 해당 패키지를 가져오기 위해서는 pubspec.yaml 파일을 열고 dependencies 섹션에 아래와 같이 추가해야 합니다.

dependencies:
  http: ^0.14.0

그런 다음, 터미널에서 pub get 명령어를 실행하여 해당 패키지를 가져옵니다.

범용적인 API 클라이언트 클래스 작성

이제 HTTP 요청을 보내기 위한 범용적인 API 클라이언트 클래스를 작성할 차례입니다. 아래는 이를 위한 예시 코드입니다.

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

class ApiClient {
  final String baseUrl;

  ApiClient(this.baseUrl);

  Future<http.Response> getRequest(String path) async {
    final url = Uri.parse('$baseUrl$path');
    return await http.get(url);
  }

  Future<http.Response> postRequest(String path, dynamic data) async {
    final url = Uri.parse('$baseUrl$path');
    return await http.post(url, body: data);
  }

  // 다른 HTTP 메소드들에 대한 메소드들도 추가할 수 있습니다
}

위의 코드는 범용적인 API 클라이언트 클래스를 정의하고 있습니다. 이 클래스를 사용하면 모든 API 엔드포인트에 대해 get 및 post 요청을 보낼 수 있습니다.

사용 예시

이제 작성한 API 클라이언트 클래스를 사용하여 HTTP 요청을 보내는 방법을 살펴보겠습니다.

void main() async {
  final apiClient = ApiClient('https://api.example.com');

  // GET 요청 보내기
  final getResponse = await apiClient.getRequest('/data');
  print('GET 요청 결과: ${getResponse.body}');

  // POST 요청 보내기
  final postResponse = await apiClient.postRequest('/submit', {'key': 'value'});
  print('POST 요청 결과: ${postResponse.body}');
}

위의 예시는 ApiClient 클래스의 인스턴스를 생성하고, 해당 인스턴스를 사용하여 GET 및 POST 요청을 보내고 있습니다.

이를 통해 Dart를 사용하여 HTTP 요청을 보내는 범용적인 API 클라이언트를 만드는 방법에 대해 간략하게 알아보았습니다. 필요에 맞게 이를 확장하여 다양한 HTTP 요청을 처리할 수 있습니다.

참고 자료