인터셉터 질문입니다
184
작성한 질문수 36
1)
인터센터 구현하실 때 storage를 주입해서 사용했고
final FlutterSecureStorage storage;
다른 스플래쉬 스크린에서는 const로
common > const > data.dart
final storage = FlutterSecureStorage(); 에 있는 storage를 가져다 쓰고 있습니다.
stateless, stateful widget도 결국 class가 청사진 이라고 생각되는데
모두 storage;를 주입 받아야 하지 않나요? 궁금합니다..!
2)인터셉터에서
선생님께서 onRequest 에
return super.onRequest(options, handler); 부분이 핸들러가 에러를 발생시킬지 , 정상처럼 진행시킬지 알아서 결정한다고 하셔서
그럼 혹시 여기서도 return handler.reject와 return handler.resolve를 쓸 수 있나요??
3) 인터셉터에서 onError에
if(/auth/token 경로도 아니고 && 401일때){
...
}
그외에는 return handler.reject(err)를 사용했는데
사실 그대로 에러를 내는 거면
return super.onError(err,handler); 를 써도 되지 않나요?
답변 1
0
안녕하세요!
1) Provider를 사용하고 있으니 주입받은 것 뿐입니다. 만약에 UI에서도 provider를 사용하고싶다면 주입 하셔도 괜찮습니다. 코드의 일관성의 문제에 가깝고 사실상 기능상은 차이가 없습니다. FlutterSecureStorage가 한번 생성되면 변경될 일이 없기 때문입니다.
2) 하셔도 괜찮습니다. 실제 내부적으로 맨 마지막에는 handler.reject 또는 handler.resolve를 실행하고 있을걸로 생각됩니다.
3) 마찬가지입니다. "써도 되지 않나요?"라는 질문이 혹시 완전 같은거라고 생각하신다면 그렇지 않습니다. handler.resolver, handler.reject는 handler의 함수를 실행한겁니다. super.onError를 실행한다면 부모 클래스의 onError 정의를 그대로 다시 한번 실행 해주게됩니다. 그렇기 때문에 둘은 완전히 다릅니다. handler.reject는 명시적으로 에러를 터트리게되고 super.onError를 실행하면 부모의 onError 함수에 정의된 로직을 다시한번 실행합니다. 2번에서 handler.resolve 대신 super.onRequest를 실행한 이유도 마찬가지입니다. 제가 생각하는 onRequest의 로직이 존재하지만 해당 로직을 실행시킨다해서 원래 정의돼있던 onRequest 로직을 통째로 버리면 Dio 내부적으로 기본으로 정의 돼있는 요청 처리 로직을 잃게됩니다. 3번의 경우 확실한 에러가 났을때 부모 로직을 통해서 한번 더 확인할 필요가 따로 없기 때문에 명시적으로 reject 한것입니다. 실행과 뉘앙스 둘 다 모두 큰 차이가 있습니다.
감사합니다!
Isar 마지막 업데이트는 2년전입니다.
0
30
0
FlutterSecureStorage 질문
0
31
0
Dio onError Interceptor 만드는 부분에 질문이 있습니다.
0
79
2
관리자 기능에 대한 질문
0
100
2
part 'restaurant_model.g.dart';
0
92
1
36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.
0
56
2
2번 반환 상황 관련 질문
0
61
2
riverpod 3.0
0
139
2
Asset folder??
0
82
2
디자이너와 협업 시 프레임 크기 설정 관련 질문
0
113
2
FutureProvider, StateNotifierProvider 선택 기준
0
70
2
컴포넌트 모델화
0
64
2
쿼리 파라미터
0
84
2
화면 안보임
0
68
2
PaginationListView
0
54
1
강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.
0
101
2
프로토타입이미지
0
62
2
여러 객체를 상태 관리하는 방법에 대한 질문
0
84
2
장바구니 결제하기 응답이 500이 옵니다.
0
105
2
removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?
0
67
2
이 두가지는 완전히 동일한 기능인가요?
0
106
3
내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...
0
77
2
_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?
0
86
2
코딩 작성 순서 관련 질문
0
88
2





