Conversation
๋๋ฌด ํผ๊ณคํด์ ์ปค๋ฐ ๋ง์ ์ ใ ใ
malibinYun
left a comment
There was a problem hiding this comment.
ํ ;; ๋์ ์ค๊ฐ๋์ ์ด์
๊น์ง ์ณ๋ค์ด์์ ๋ฆฌ๋ทฐ๋ฅผ ๋จ๊ธฐ๋๊ฒ ์ฉ ์ ์พํ์ง๋ง์ ์์ฟค์.
์จ๋ ๋ถํํ์ผ๋ ๋ด๊ฐ ๋๋์ ๋ค์ ๋งํด์ฃผ๋๋ฐ.. ์กด๋ ์ธ๋ฐ ์์ ์๋์์.
๋ด๊ฐ ์ฒ์ ์ด๋์ ํจํด์ ๋ง๋๋ ค๊ณ ํ๋๊ฑด ๊ทธ๋ฅ ๋ด๊ฐ ์ฐ๊ธฐ ํธํ๋ ค๊ณ ๋ง๋ค๋ ค๋๊ฑฐ์์. rx๊ฐ์ ์ฌ์ฉ์ฑ์ ๊ฐ์ง๊ฒ ์ฒ๋ผ ๋ง๊ฐ์กฐ๋ฅผ ํ๊ฑฐ์ง
์ฒ์์ ์๋ฒฝํ๊ฒ rx์ฒ๋ผ ๋น๋ํจํด์ผ๋ก ๊ตฌํํ๋ คํ์์.
ใ
ใ
Request.setParams()
.set...Listener
.set...Listener
.send()
๋ญ ์ด๋ฐ์์ผ๋ก. ๊ทผ๋ฐ ๋ง๋ค๋ค๋ณด๋ ๋น๋ํจํด์ ๋ง๋ค ์ค ๋ชฐ๋์ด์ apply๋ธ๋ฝ์ ์จ์ผ๋ง ํ๋ ๊ฐ๋ณ์ ์ฝ๋๋ฅผ ๋ง๋ค๊ฒ๋๊ฑฐ์. ๊ทผ๋ฐ ์๊ฐ์ด ์์ผ๋ ๊ทธ๋ฅ ๊ทธ๋๋ก ์ฐ๊ฒ ๋๊ฑฐ๊ณ .
๊ฐ์คํ๊ณ ,
๋๋ Callback์ ์ฌ์ฉํด์ผ๋ง ํ๋ ์ ์ฝ์กฐ๊ฑด + rx OR Coroutine ๊ฐ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ ์ ์ฝ์กฐ๊ฑด ๋๋ฌธ์ ํธ์์ "๋๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ"๋ฅผ ๋ง๋ ๋๋์ด์ง.
๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ฑฐ๋ฉด, ์ด๋ป๊ฒ ์ฌ์ฉํ ๊ฒ์ธ์ง์ ๋ํด ๋จผ์ ์ค๊ณ๋ฅผ ์น๋๊ฒ ๋ง๋ค๊ณ ๋ด. ๋ด๊ฐ ์ฒ์์ "Rx์ฒ๋ผ ๋น๋ํจํด์ผ๋ก ์ฌ์ฉํ๊ฒ ๋ง๋ค์ด์ผ์ง" ๋ผ๊ณ ํ ๊ฒ ์ฒ๋ผ. ๊ทธ๋ฐ ์ฝ๋๋ฅผ ์จ์ ์ฌ์ฉํ ์ ์๊ฒ ์ฝ๋๋ค์ ๋ผ์ ๋ง์ถ๊ฑฐ์.
๋๋ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊ฑด์ง์ ๋ํด ๋จผ์ ์ค๊ณํด์ผ๋๋ค๊ณ ๋ด. ๊ทธ ๋ค์์๋ ๋ ์ด์ด ๋ถ๋ฆฌ, ์ฑ
์ ๋ถ๋ฆฌ๋ฅผ ํ๋๊ฑฐ๊ณ . ๊ทธ๋ฌ๋ ๋์ฒ๋ผ ๋๊ฐ์ด apply๋ฅผ ์ฐ์ง ์์ผ๋ฉด ์๋๋ ๊ฐ ์ด์ํ ์ฝ๋๊ฐ ๋์ค๋๊ฑฐ์
์์ฑ์์ ์์ฑ์๋๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด์ผํ๊ณ , ๋ send๋ฅผ ๋ณด๋ผ ๋ ๋ send ๋๋ก ํ ํฐ์ ๋ฃ์ด์ผํ๊ณ . ๋ฆฌ์ค๋๋ ๋ ๋ฆฌ์ค๋๋๋ก ๋ฌ์์ผ๋๊ณ .
์ฌ์ฉ์ ์ธ ์ธก๋ฉด์์ ์ ๋ด๋ด. ์ฒ์ ๋ณด๋ ์ฌ๋์ด ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๋ฌด๋ฆฌ๊ฐ ์๋๊ฐ? ๋ด ์ฝ๋๋ ์ ์ด๋ ์ฌ์ฉํ๋ ๋ฐ ์ฒ์ ๋ณด๋ ์ฌ๋์ ์ดํด๊ฐ ์๋ ์๋ ์์๊ฒ ๊ฐ์.
rx๋ ๋ณด์
. ์กด๋ ์ง๊ด์ ์ด๊ณ ์ํ ๋ค์. ๊ทธ๊ฒ๋ง ๋ด๋ ๋ชฌ ํ๋ฆ์ธ์ง ์กฐ์ฐจ ์ ์ ์์.
์๋๋ ์๋ ์ ๋ถ์คํธ์ฝ์ค ํ ๋ Request ๊ฐ์ฒด์ ๋ํ ๋ฉํ ๋์ ์ค๋ช
์ด์์ ์ง๊ธ ๊ธฐ์ต๋ ์๋๊ธด ํ์ง๋ง, ๋ญ๊ฐ ๋๊ฐ Request๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์ถ์ดํ๋๊ฑฐ ๊ฐ์์ ๋์์ด ๋ ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ฒจ๋ถํจ. ์ด๋ ์ฌ์ฉํ๋ Volley ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ณ , Retrofit๊ณผ๋ ํ๋ฑ ์๊ด์์ ์๋ ์์. ์๋ง ๋ฉํ ๋์ ์ง์ HttpUrlConnection๋ฑ netty์ฌ์ฉํด์ ๋ ํธ๋กํ ๊ฐ์ ๊ฑธ ๋ง๋ค๊ธธ ๋ฐ๋์ ์๋. ๊ทธ๋๋ ์ธ์ฌ์ดํธ๋ฅผ ๋ํ์ค ์ ์์๊ฑฐ๋ผ ์๊ฐํด์ ๋ฃ์

ํ ์ํ๋ ๋ต๋ณ์ด๋์ ์กด๋ ๋ด์๋ฆฌ๋ง ํด์ ๋์์ด ์๋์ ๊ฑฐ ๊ฐ์๋ฐ, ์ด๋ฐ ์๋๋ค์ ์๋ ์์ฒด์ ์๋ฏธ๊ฐ ์๋ค๊ณ ๋ด. ๊ทธ๋ฌ๋ฉด์ ๊ณ ๋ฏผํ๊ณ , ๋ ๋ค๋ฅธ๊ฑธ ๋ง๋ค์ด๋ณด๊ณ . ๋ฆฌํฉํฐ๋ง ํด๋ณด๊ณ . ์ด๊ฑฐ ์์ฒด์ ์๋ฏธ๋ฅผ ๋์ธ์. ์ ๋ ์ฝ๋ฃจํด ์ธ๊ฒ๋๋ค ^^
| if (response.isSuccessful) { | ||
| onSuccessListener?.invoke(response.body() ?: return) | ||
| return | ||
| } |
There was a problem hiding this comment.
์ด๋ฌ๋ฉด ํต์ ์ ๋๋๋ฐ 400๋ฒ๋ ์๋ต์ด๋ผ
body๊ฐ null๋ก ๋ค์ด์ค๊ณ errorBody์์ ๊บผ๋ด์ผํ๋๋ฐ, body ?: return ์ด๋ฉด errorbody๊น์ง ๊ฐ์ง ๋ชป ๊ฐ๋ฏ
null ์ฒ๋ฆฌ๋ ์๊ฐ๋ณด๋ค ๊ณ ๋ฏผ์ ๋ง์ดํด์ผํจ. exception ์ฒ๋ฆฌ๋ฅผ ํ ๊ฒ์ธ์ง null์ฒ๋ฆฌ๋ฅผ ํ ๊ฒ์ธ์ง.
There was a problem hiding this comment.
์ ๋ฌด์น ์ ์ ์์ด ์ง๋๋ผ ์๊ฐ์ ๋ชปํ์๋๋ฐ ์ญ์ ํ๋ ๊ฐ์ฌ... ๋ฌด๋ฆฌํ ๋ถํ์ ์ข์ ๋ต๋ณ, ์ข์ ๋ ํผ๋ฐ์ค ๋์ ธ์ฃผ๋ ๋๋ฌด ๊ฐ์ฌใ ใ
| private fun createResponseErrorBody(errorBody: String): BaseResponse<Unit> { | ||
| val gson = GsonBuilder().create() | ||
| val responseType = object : TypeToken<BaseResponse<T>>() {}.type | ||
| return gson.fromJson(errorBody, responseType) | ||
| } |
There was a problem hiding this comment.
๋ ์ด๊ฒ ๋ฌด์จ ์๋ฏธ๊ฐ ์๋ ์ถ์. ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ๊ฑฐ์ง๊ฐ์ด ๋ด๊ฐ ์ง์ ์ง์ผ๋๋ค๋ ๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ง๋๋ ์ฌ๋๋ค์ด ๊ณ ๋ ค ํ์ง ์์๋ค๋ ๋ถ๋ถ์ธ๋ฐ,
์ด๊ฑด ์ญ์ค์ ์ผ๋ก ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค๊ณ์๋ค์ด errorbody๋ฅผ ํ์ฑํ ํ์๊ฐ ์๋ค ํ๋จํ๋ค๊ณ ์๊ฐํจ.
๋ฐ๋๋ก ์๊ฐํ์ ๋, ํด๋ผ๊ฐ ์ errorbody๋ฅผ ๋ฐ์์ผํ๋? ํจํท์ message๋ฅผ ๋ฃ์ ์ ์๋ ๋์ด ์๋๋ฐ, ๊ฑฐ๊ธฐ์ ๋ฃ์ผ๋ฉด ์ถฉ๋ถํ ์๋ฒ๊ฐ ํ๊ณ ์ถ์ ๋ง์ ํ ์ ์์๊ฑฐ๋ผ ์๊ฐํจ. response.message์ด๋ฐ์์ผ๋ก ์ ๊ทผํ ์ ์์๊ฑฐ์ ์๋ง. ๋๋ ๊ฐ์ธ์ ์ผ๋ก errorbodyํ์ฑ์ ๋ํด ๊ต์ฅํ ํ์์ ์. (๋ณธ์ธ๋ ์ด๋ฐ ์ฝ๋๋ฅผ ์ง ์ ์ด ๋ง์)
There was a problem hiding this comment.
๋ง์ ํ ์ฝ๋ ๋ณด๊ณ ์ฌ์ค ๋๋ ์ด๋ถ๋ถ์ ๋ํ ํ์ฑ์ ์ ๋ชฐ๋ผ์ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๊ธด ํ๋๋ฐ ์ฌ์ค ์งํผ status์ฝ๋๋ ํ์ฑํ์ง ์์๋ ์์ ์๋ค ์๊ฐํด์ ๊ทธ๊ฑฐ์ ๋ง์ถ ์ฒ๋ฆฌ๋ง ์ ์ ํ ํด์ฃผ๋๊ฒ ์ข์์ง ์๋ ์ด๋ ๊ฒ ์๋ฌ๋ฐ๋๋ฅผ ์์ธํ๊ฒ ์์์ผํ ์ง ์์ฌ์ธ ๋ถ๋ถ์ด ๋ง์๋๋ฐ ํ ๋ง์ ๋ค์ด๋ณด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค๊ณ์๋ค์ด errorbody๋ฅผ ํ์ฑํ ํ์๊ฐ ์๋ค ํ๋จ ์ด ๋ง์ด ์ ๋ฟ๋๊ฑฐ ๊ฐ์ ๊ฐ์ฌ๊ฐ์ฌ
| fun send(token: String?) { | ||
| MeaningService.getInstance() | ||
| .requestPostTimestamp( | ||
| token = token, | ||
| params = createPartMap(), | ||
| image = image | ||
| ).enqueue(callback ?: return) | ||
| } |
There was a problem hiding this comment.
์ฌ๊ธฐ๋ null์ฒ๋ฆฌ ์ ๋งคํจ.
์ฝ๋ฐฑ์ ๋ฃ์ง ์๊ณ send๋ฅผ call ํ๋ค ์น์. ๊ทธ๋ผ ์๋ฌด์ผ๋ ์์ผ์ด๋ ๊ฑฐ์ ์ฑ์์๋. ์ฌ์ง์ด ๋ก๊ทธ์กฐ์ฐจ ์ฐํ์ง ์๊ฒ ์ง. ๊ทธ๋ผ ๋๋ฒ๊น
์ ์ด๋์ ๋ถํฐ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ๋ผ. ์ฐจ๋ผ๋ฆฌ exception์ ํฐํธ๋ฆฌ๋๊ฒ ๋ซ๋ค๊ณ ๋ด. ์๋๋ฉด callback์ ๋ฐ๋์ ๋ฃ์ด์ผํ๊ฒ๋ ์ค๊ณ๊ฐ ๋์๋๊ฑฐ ๊ฐ๊ฑฐ๋ .
There was a problem hiding this comment.
๋ง์ต๋๋ค ํ๋... ๊ทธ์ ๋น
| fun onSuccessListener(listener: ((BaseResponse<T>) -> Unit)) { | ||
| this.onSuccessListener = listener | ||
| } |
There was a problem hiding this comment.
๋๋ผ๋ฉด setOn...Listener๋ผ๊ณ ์ง์๋ฏ
There was a problem hiding this comment.
๋๋ ์ฒจ์ setOn์ ๊ณ ๋ คํ๊ณ ํ์ด ์ฌ๋ ค์ค Rx์ฒ๋ผ ํด๋ณด๊ธฐ ์ํจ์ด์๋๋ฐ ๋น๋๋ก๋ ๋ง๋ค์ด๋ดค์ผ๋ ๋ง๋๋ ๊ณผ์ ์์
"์ด๋ ๊ฒ ๋ง๋ค๊บผ๋ฉด ๋น๋ ํจํด์ด ํ์ํ ๊น?" ๋ ์๊ฐ๊ณผ ๋น๋ ํจํด์ ๋ญ์๊ธฐ๋ ์น๋ค ๋ฌด์ํ๊ณ ๊ทธ๋ฅ ์ต์ง๋ก ๋ถ์ฌ๋ฃ๋ ์ฝ๋๊ฐ ๋์ด๊ฐ์ apply setOn๋ณด๋ค๋ SetEvent on~~ ๊ฐ ์ ์ ํ๋ค ์๊ฐํ๋๋ฐ
ํผ๋๋ฐฑ ๋๋ฌด ์ ์ฝ์๊ณ ํญ์ ๋๋ฌด ๊ฐ์ฌ...ใ
ใ
๋ฐ๋น ์ฃฝ์ด๊ฐํ ๋ฐ ๋ฌด๋ฆฌํ ๋ถํ ๋ค์ด์ค์ ๋๋ฌด ๊ณ ๋ง๊ณ ์ง์ง ์ธ์ ๊ฐ ํฌ๊ฒ ์ฑ์ฅํด์ ํฌ๊ฒ ํ๋ฒ ๊ฐ์๊ป
There was a problem hiding this comment.
๊ทธ๋๊ทธ๋ ํฌ๊ฒ ๋ค์ด๋ฒ ๊ฝ๋๊ฑธ๋ก ๊ฐ์๋ผ
Description
Request ๋ถ๋ถ ์ฝ๋ ์์ฑ
๊ณ ๋ ค์ฌํญ.
BaseRequest?
callback์ ๊ตฌํํ๋๊ฒ์ด Request์ ์ง์ง ํ์์ผ๊น?
๊ทธ๋ฌ๋ค๋ฉด ์ ์ด์ call.enque์ ํ์์ด ์๋์ง ์์๊น?
call๊ฐ์ฒด์ enqueue๋ผ๋ callback์ ๊ตฌํํด์ ๋ฃ์ด์ฃผ๋ ์ด์ ์ ์ด๊ธ ๋๋ ๋ถ๋ถ์ผ ๊ฒ ๊ฐ๋ค ์๊ฐ
์ฐ๋ฆฌ๊ฐ ๋ง๋๋ Request๋ ๋ฉ์๋ ํธ์ถ๋ก ๋ฐํ๋ call์ callback์ ์ ๋ฌํด์ฃผ๋ ํ์์ด๋ผ ์๊ฐํจ.
-> ์์๊ตฌ์กฐ๋ฅผ ํ์ง ์๊ธฐ๋ก ๋ง์ ๋จน์
๊ทธ๋ผ ์ค๋ณต ์ฝ๋๋?
์ฌ์ค ์ด๋ ๊ฒ ๋ง๋ค๋ฉด Reqeust๋ผ๋ ํด๋์ค ์์ ๋ฐ๋์ Callback ์ธ์คํด์ค๋ฅผ ๊ฐ์ง๊ณ ๊ทธ๊ฒ์ applyํ๋ ์ฝ๋๋ฅผ ์ ์ด์ผํจ
๊ทธ๋ ๋ค๊ณ ์ด ์ฝ๋ ์ค๋ณต์ ์ ๊ฑฐํ๋ ์์๊ตฌ์กฐ?๋ ์์์ด๋ ๊ฐ๋ ์์ ์ด๊ธ๋ฌ๋ค๊ณ ์๊ฐํ์.
์ฐจ๋ผ๋ฆฌ ํ์ฅํจ์๋ฅผ ์ ์ํด์ ๋๊น? ์๊ฐํ์ผ๋ ์๊ฐ์ ๋น ์..
Request์ ๋ฒ์๋ ๋ญ์ง?

์ฐ๋ฆฌ๊ฐ ์ฐ๋ enqueue๋ execute๋ถ๋ถ์์ ํธ์ถ๋ ๊ฒ์ด๋ฉฐ ๋น๋๊ธฐ๋ก ๋ฐ์์ค๊ธฐ์ ๋น๋๊ธฐ๋ก ๋ฐ์์๋ ์ด๋ค์ผ์ ํ ์ง ์ ์ํด์ฃผ๋ ๋ถ๋ถ์ด Request์ ๋ฒ์๋ผ๊ณ ์๊ฐํ์
์ฆ Requet๋ผ๋ ๊ฐ์ฒด๋ ์ฐ๋ฆฌ๊ฐ ์๋ฒ์ ์ด๋ค๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ์ด๋ค ์ผ์ ํ ์ง ์ง์ ํ๋ ์ฑ ์์ด ์๋ค๊ณ ์๊ฐํจ.
๊ทธ๋ ๊ธฐ์ callback์ ์์์ด ์๋ ๋ด๋ถ์ ์ธ์คํด์ค๋ก ๊ฐ์ง๋๋ก ํจ.
๊ทธ๋ฆฌ๊ณ Request์์ ๋ณด๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํจ.
์์ฑ์๋ก ๋ค์ด์ฌ ๋งค๊ฐ ๋ณ์๊ฐ ๋ง์ ๊ฒฝ์ฐ๋ DataCalss๋ก ๋ฐ์ ์๊ฐํจ.
๊ฒฐ๊ตญ ์ด ๊ฒฝ์ฐ์ ์ปดํฌ์ง์ ์ ์ด๋ป๊ฒ ํด์ผํ ์ง ๊ฐ์ด ์์กํ ์ดํฉํฐ๋ธ ์๋ฐ ์์๋ Set์ด ๋ฌ๋ ค์๋๋ฐ ๊ทธ๊ฑธ ์ดํดํ์ง ๋ชปํ๋ ํ๊ณ์ ์์ ์ ๋ถ์กฑํจ์ผ๋ก ์ธํด ํํ์ด
์ ์ฅ.... ๋ ๊ฐ์์ผ... ใ ใ ๋งํ๋ ๊ฐ์...
์ฐธ๊ณ
ํด๋น ๋ถ๋ถ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์ํด์ ์ผ๋ถ๋ฌ ์ด๋ฆ์ Review๋ฅผ ๋ถ์์ต๋๋ค. ์๋ Review๊ฐ ์๋ค๊ณ ์๊ฐํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
ํฌ๋ง ๋ฆฌ๋ทฐ ์๋ฃ์ผ
์์ ํ์ดํ ํธํ ๋ ํ๊ฐํ ๋ ํด์ฃผ๋ฉด ์ง์ง ๋งค์ฐ ๊ฐ์ฌ ใ ใ ?