[flutter] pretty_dio_logger를 활용한 인증 및 권한 관리

소개

안녕하세요! 이번 글에서는 Flutter 앱에서 네트워킹을 효율적으로 관리하기 위해 pretty_dio_logger 및 인증 및 권한 관리에 대해 다루어 보겠습니다.

pretty_dio_logger

pretty_dio_logger는 Dio 인스턴스에 인터셉터로 활용되는 패키지로, 네트워크 요청과 응답을 로깅하고 시각화하는 데 사용됩니다. 이를 사용하면 네트워킹 동작을 쉽게 디버깅할 수 있으며, 개발 및 테스트 중에 요청과 응답을 시각적으로 확인할 수 있습니다.

설치

아래의 명령어를 사용하여 pretty_dio_logger 패키지를 설치합니다.

flutter pub add pretty_dio_logger

또한, dio 패키지도 함께 설치되어 있어야 합니다.

사용법

pretty_dio_logger를 Dio 객체에 추가하기 위해서는 다음과 같이 설정합니다.

import 'package:pretty_dio_logger/pretty_dio_logger.dart';

final dio = Dio();

dio.interceptors.add(PrettyDioLogger());

위와 같이 설정하면, pretty_dio_logger가 모든 네트워크 요청 및 응답을 로깅합니다.

인증 및 권한 관리

네트워크 요청을 보낼 때에는 종종 사용자의 인증 정보나 권한이 필요합니다. 이러한 요구사항을 충족시키기 위해 Dio의 Interceptor를 활용하여 사용자의 토큰을 요청 헤더에 추가하고, 권한이 없는 경우에는 적절한 에러 처리를 수행할 수 있습니다.

사용자 토큰 추가

다음 예시와 같이, pretty_dio_logger로 로깅하는 요청에 헤더를 추가할 수 있습니다.

dio.interceptors.add(InterceptorsWrapper(onRequest: (options, handler) {
  final userToken = '사용자 토큰 가져오기';
  options.headers['Authorization'] = 'Bearer $userToken';
  return handler.next(options);
}));

에러 처리

네트워크 요청 중에 발생하는 에러는 다양한 상황에서 발생할 수 있습니다. 예를 들어 권한이 없는 요청을 보냈을 때에는 403 Forbidden 에러가 발생합니다. 이러한 에러를 적절히 처리하기 위해, Dio의 Interceptor를 활용할 수 있습니다. 다음 예시는 403 에러를 처리하는 방법을 보여줍니다.

dio.interceptors.add(InterceptorsWrapper(onError: (e, handler) {
  if (e.response?.statusCode == 403) {
    // 권한이 없는 경우의 처리
  }
}));

결론

pretty_dio_logger를 활용하여 네트워크 요청과 응답을 쉽게 로깅하고 시각화할 수 있으며, Dio의 Interceptor를 이용하여 사용자의 토큰을 추가하고 권한을 관리할 수 있습니다. 네트워크 통신에 관련된 기능들을 잘 활용하면, Flutter 앱의 개발 및 디버깅을 더욱 효율적으로 수행할 수 있습니다.

참조: