network

μš©λ„

μ„œλ²„μ™€ ν†΅μ‹ ν•˜κΈ° μœ„ν•¨μ΄λ‹€. 톡신을 ν•  λ•Œ 기본적으둜 헀더에 μ‹€μ–΄μ„œ 전달해야할 정보듀도 있고, 인터셉터λ₯Ό ν™œμš©ν•΄μ„œ μ„œλ²„μ˜ 응닡에 따라 μ „μ²˜λ¦¬κ°€ ν•„μš”ν•œ κ²½μš°λ„ μžˆλ‹€. 이 λͺ¨λ“  사항을 λŒ€μ‘ν•˜κΈ° μœ„ν•œ λͺ¨λ“ˆμ΄λ‹€.

κ΅¬ν˜„

dio λ₯Ό μ‚¬μš©ν•œλ‹€.

$ flutter pub add dio

data λ ˆμ΄μ–΄ 내에 network 말고 response, request, repository λ₯Ό λ‘˜ 수 μžˆλ‹€. λ‚˜μ€‘μ— domain μ˜μ—­μ—μ„œλ„ μ •λ¦¬ν•˜κ² μ§€λ§Œ repository 의 경우 domain λ ˆμ΄μ–΄μ— μΈν„°νŽ˜μ΄μŠ€λ₯Ό 두고 data λ ˆμ΄μ–΄μ—μ„œ κ΅¬ν˜„μ²΄λ₯Ό λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•˜λŠ” 것이 μ—„κ²©ν•˜κ²Œ 클린 μ•„ν‚€ν…μ²˜λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것이닀. ν•˜μ§€λ§Œ ν”„λ‘œμ νŠΈλ₯Ό ν•΄λ³΄λ‹ˆ 데이터 μ†Œμ‹± μ „λž΅μ΄ μ „μ²΄μ μœΌλ‘œ λ°”λ€λ‹€λ˜κ°€ ν•˜μ§€ μ•ŠλŠ” 이상 λΆˆν•„μš”ν•˜κ²Œ 계측을 λ‚˜λˆ„λŠ” ν–‰μœ„λΌκ³  λŠκ»΄μ‘Œλ‹€. 결둠적으둜 repository λŠ” data λ ˆμ΄μ–΄μ—λ§Œ λ°”λ‘œ κ΅¬ν˜„μ²΄λ₯Ό λ‘λŠ” 것이 쒋은 것 κ°™λ‹€.

μœ„μ™€ 같이 μž‘μ—…ν•΄μ£Όλ©΄ ν΄λΌμ΄μ΄μ–ΈνŠΈ μ •μ˜λŠ” 끝이 λ‚œλ‹€. μ•„λž˜λŠ” λ‚΄κ°€ μ‚¬μš©ν•œ 인터셉터닀. 기본적인 것듀이닀.

BaseHeaderInterceptor λŠ” 헀더에 기본적으둜 담을 λ‚΄μš©λ“€μ„ μ„ΈνŒ…ν•œλ‹€.

TokenInterceptor λŠ” 토큰 λ§Œλ£Œμ‹œ λ°”λ‘œ μ—λŸ¬λ₯Ό λ‚΄λŠ” 것이 μ•„λ‹ˆλΌ λ¦¬ν”„λ ˆμ‹œ 토큰을 μ΄μš©ν•΄μ„œ λ‹€μ‹œ 토큰을 μž¬λ°œκΈ‰λ°›μ•„μ„œ 기쑴의 μš”μ²­μ„ κ·ΈλŒ€λ‘œ μˆ˜ν–‰ν•˜λŠ” 것이닀. μ„œλ²„μ—μ„œ 토큰이 λ§Œλ£ŒμΌλ•Œ μ•„λž˜μ™€ 같이 μ•½μ†λœ μ½”λ“œμ™€ statusλ₯Ό λ‚΄λ €μ£Όκ³  두 쑰건이 λͺ¨λ‘ λ§Œμ‘±ν•  λ•Œ μž¬λ°œκΈ‰ 처리λ₯Ό ν–ˆλ‹€. λ‚˜λŠ” μ„œλ²„μ—μ„œλ„ λ¦¬ν”„λ ˆμ‹œ 토큰을 λ³΄κ΄€ν•˜λ„λ‘ ν•΄μ„œ λ³΄μ•ˆμ„ κ°•ν™” ν•˜λŠ” μͺ½μœΌλ‘œ κ΅¬ν˜„ν–ˆλ‹€.

μ•„λž˜λŠ” μ‹œμŠ€ν…œ μ κ²€μ€‘μΌλ•Œ μ‹œμŠ€ν…œ μ κ²€μ€‘μ΄λΌλŠ” λ‹€μ΄μ–Όλ‘œκ·Έλ₯Ό λ„μš°κ³  선택지 없이 앱을 μ’…λ£Œμ‹œν‚€λ„λ‘ ν•˜λŠ” 인터셉터이닀. 토큰 인터셉터와 λ§ˆμ°¬κ°€μ§€λ‘œ μ„œλ²„μ—μ„œ μ •μ˜λœ μ½”λ“œμ™€ status λ₯Ό λ‚΄λ €μ£Όκ²Œ ν–ˆλ‹€.

μ‚¬μš©

μ‚¬μš©μ€ μœ„μ™€ 같이 Injector 에 μ •μ˜ν•΄λ‘κ³  ν•„μš”ν•  λ•Œ(= Bloc 에 μ£Όμž… λ˜λŠ” Repository 에 μ£Όμž…) κΊΌλ‚΄μ„œ μ‚¬μš©ν•œλ‹€.

Last updated