TeamSparker / Spark-iOS

์•„์š”๋Š”๐Ÿ—ฟ๐Ÿ”ช์Šˆ์Š‰..์Šˆ์Š‰,,,์Š‰...์Šค...์ŠคํŒŒํฌ๐ŸŽ‡
63 stars 6 forks source link

[Feat] #655 - RequestContainer ๊ตฌํ˜„ ๋ฐ Extension #658

Closed L-j-h-c closed 1 year ago

L-j-h-c commented 1 year ago

๐Ÿ”ฅPull requests

โ›ณ๏ธ ์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜

๐Ÿ‘ท ์ž‘์—…ํ•œ ๋‚ด์šฉ

์ฐธ๊ณ ์‚ฌํ•ญ

  1. Request๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด์— ์ €์žฅํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฆฌํ€˜์ŠคํŠธ๊ฐ€ ์˜ค๋ฉด cancel()ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  2. Plugin์˜ onfail์—์„œ ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ ํŒ์—…์ด ๋– ์„œ, errorCode๊ฐ€ 6์ธ ๊ฒฝ์šฐ(cancel())์— ๋„คํŠธ์›Œํฌ ํŒ์—…์„ ๋„์šฐ์ง€ ์•Š๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

  3. NoticeAPI์—๋Š” ์‹œํ—˜์ ์œผ๋กœ ์ ์šฉํ–ˆ๊ณ , throttle ์ฃผ์„์ฒ˜๋ฆฌ ํ•ด๋†“์•˜์Šต๋‹ˆ๋‹ค.

  4. Container ์ ์šฉ๊ณผ๋Š” ๊ด€๋ จ ์—†์ด, ์ŠคํŒŒ์ปค ํ™œ๋™๊ณผ ์•ˆ๋‚ด ํƒญ์„ ๋ฒˆ๊ฐˆ์•„ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌดํ•œ์Šคํฌ๋กค๋กœ ์ธํ•œ ์ธ๋ฑ์Šค ์—๋Ÿฌ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

10/13 ์ถ”๊ฐ€ ์ˆ˜์ •์‚ฌํ•ญ

  1. RequestContainer์˜ Container๋ฅผ Dictionary ํ˜•ํƒœ๋กœ ์ „ํ™˜ํ–ˆ๊ณ , ํŠน์ • API๊ฐ€ ์–ด๋–ค ๋ถ„๋ฅ˜์— ์†ํ•˜๋Š”์ง€ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ด๊ฑฐํ˜•์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. APIType์— ๊ด€๋ จ๋œ request๋“ค๋งŒ cancelํ•˜๋Š” ์‹์œผ๋กœ ํšจ์œจ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.

  2. ๋ณด๊ด€ํ•จ์—์„œ๋Š” 3๊ฐ€์ง€ API๊ฐ€ ๋™์‹œ ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ API์—์„œ doCleanRequest()๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœ๋œ API๋กœ ์ธํ•ด ์•ž์— ํ˜ธ์ถœ๋œ 2๊ฐ€์ง€(์ง„ํ–‰์ค‘, ์‹คํŒจ) API์˜ request๊ฐ€ cancel๋˜์–ด๋ฒ„๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ์„œ ์ด๋ฅผ ๋ถ„๊ธฐ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  3. ์œ„ 2๋ฒˆ์˜ ๊ณผ์ •์—์„œ ์•Œ๊ฒŒ๋œ ์‚ฌ์‹ค์€ dispatchGroup์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ group.enter์˜ ์‹œ์ ์— ์—ฌ๋Ÿฌ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋™์‹œ์— ์ง„ํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ API์—๋งŒ doCleanRequest๋ฅผ ํ•˜๋ฉด 2์˜ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ฒ ๋‹ค๋Š” ์˜ˆ์ƒ๊ณผ ๋‹ฌ๋ฆฌ ์ฒซ ๋ฒˆ์งธ API์—์„œ doCleanRequest๊ฐ€ ์ˆ˜ํ–‰๋˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ๋น„๋™๊ธฐ ๋ธ”๋ก์ด ๋จผ์ € request๋กœ ๋งŒ๋“ค์–ด์ ธ์„œ group์ด leave๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Ongoing API์˜ Completion์— ๋‚˜๋จธ์ง€ API ๋ธ”๋ก์„ ์ง‘์–ด ๋„ฃ์—ˆ๊ณ , ๊ทธ๋žฌ๋”๋‹ˆ ๋ฌดํ•œ ๋กœ๋”ฉ(leave๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ)์ด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  4. ๊ธฐ์กด ์•Œ๋ฆผ ๋ทฐ์—์„œ ์ŠคํŒŒ์ปค ํ™œ๋™์˜ ์ปฌ๋ ‰์…˜๋ทฐ๋ฅผ ์Šคํฌ๋กค ์‹œ์ผœ ๋†“๊ณ  ์•ˆ๋‚ด ํƒญ์œผ๋กœ ๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ ์ŠคํŒŒ์ปค ํ™œ๋™ ํƒญ์„ ๋ˆ„๋ฅด๋ฉด ์ธ๋ฑ์Šค ์—๋Ÿฌ๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ์‚ดํŽด๋ณด๋‹ˆ ์…€์ด ์ƒ์„ฑ๋˜๋Š” ์™€์ค‘์— list๊ฐ€ removeAll()๋˜์–ด ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์˜€๊ณ , API Completion ์‹œ์ ์— removeAllํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Ÿ ๊ด€๋ จ ์ด์Šˆ