• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

@Headers 에 accessToken 작성했을 시 Interceptor onRequest 에서 headers 가 빈값으로 옵니다.

23.03.25 14:13 작성 조회수 430

0

레스토랑 상세 API (/restaurant/{id}) 호출 시

아래와 같이 헤더값을 넣어 줬을 때

@Headers({
  'accessToken': 'true',
})

Interceptor 의 onRequest 메서드에서 options.headers 가 빈값으로 넘어와 if (options.headers['accessToken'] == 'true') 조건을 타지 않습니다.

@Headers 가 선언된 restaurant_repository.dart 에는 아래처럼 처리가 되어있고요.

import 'package:dio/dio.dart' hide Headers;
import 'package:retrofit/retrofit.dart';

아래 링크를 찾아서

https://github.com/Mindinventory/flutter-retrofit/issues/6

아래처럼 수정을 하면 정상적으로 동작 하는데

@Headers({
    'accessToken': 'true',
  })
  Future<RestaurantDetailModel> getRestaurantDetail({
    @Header('accessToken') required String accessToken,
    @Path() required String id,
});

동영상에서는 되고 제가 같은 방식으로 할 땐 안돼서 혹시 이렇게 처리하는게 맞는지, 아니면 어떤 부분이 잘못돼서 @Headers 로 값을 줬을 때 빈값으로 넘어오는지 궁금합니다.

 

 

 

 

 

 

 

 

 

답변 1

답변을 작성해보세요.

1

안녕하세요!

해당부분 조건을 타야 정상입니다. 혹시 Dio 버전을 저와 맞추셨을까요? 최신 Dio 버전이 다소 버그가 존재하고 있습니다.

Dio 버전을 맞춰보시고 그래도 안되면 다시한번 답변 달아주세요. 제가 제공해주신 레포지토리 실행해서 파악해보도록 하겠습니다. 말씀 주신 이슈는 제가 강의를 작성하기 전이라 현재 해당 안돼야 정상일 것 같습니다.

감사합니다!

파란하늘님의 프로필

파란하늘

질문자

23.03.28 19:29

안녕하세요. 라이브러리 버전들을 전부 현재 기준으로 최신 버전으로 맞춰서 했습니다.

말씀하신대로 강의코드와 동일하게 dio, retrofit 관련 라이브러리 버전들을 맞춰서 하니 헤더에 값이 정상적으로 들어와서 accessToken 업데이트가 잘 되네요.

해결 되었습니다. 감사합니다!