[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를 사용하는 방법에 대해 알아보았습니다. 이를 통해 요청과 응답을 로깅하여 디버깅이나 모니터링에 유용한 정보를 제공할 수 있습니다.