[dart] HTTP 요청 시에 로깅 처리하기

HTTP 요청을 보낼 때마다 로깅을 통해 요청 및 응답을 추적하는 것은 디버깅 및 모니터링에서 매우 중요합니다. Dart 언어를 사용하여 HTTP 요청을 할 때 로깅을 처리하는 방법에 대해 알아보겠습니다.

http 패키지 설치

먼저, http 패키지를 사용하여 Dart에서 HTTP 요청을 보낼 수 있습니다. 프로젝트에 아직 설치되지 않았다면 다음 명령어를 이용하여 설치합니다.

dependencies:
  http: ^0.14.0

Interceptor를 활용한 로깅 처리

http 패키지는 Interceptor를 통해 요청과 응답을 가로챌 수 있는 기능을 제공합니다. Interceptor는 요청이나 응답을 가로채어 변형시키거나 로깅을 추가하는 데 사용됩니다.

다음은 http 패키지를 사용하여 Interceptor를 활용하여 로깅을 추가하는 예제 코드입니다.

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

class LoggingInterceptor extends http.BaseClient {
  final http.Client _httpClient;

  LoggingInterceptor(this._httpClient);

  @override
  Future<http.StreamedResponse> send(http.BaseRequest request) {
    print('Sending request ${request.url}');
    return _httpClient.send(request).then((http.StreamedResponse response) {
      print('Received response for ${request.url}');
      return response;
    });
  }
}

void main() async {
  final client = LoggingInterceptor(http.Client());
  final response = await client.get(Uri.parse('https://api.example.com/data'));
  print(response.statusCode);
}

이 예제 코드에서 LoggingInterceptor 클래스는 http.BaseClient를 상속하고, send 메서드를 오버라이드하여 요청을 보내고 응답을 받기 전후에 각각 로깅을 추가합니다.

결론

Dart의 http 패키지를 사용하여 HTTP 요청 시 로깅을 처리하기 위해 Interceptor를 사용하는 방법에 대해 알아보았습니다. 이를 통해 요청과 응답을 로깅하여 디버깅이나 모니터링에 유용한 정보를 제공할 수 있습니다.