llghdud921 / Jetwork

๐Ÿญ Jerry + ๐Ÿ“ก Network = ๐Ÿš€

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Jetwork

์ € ๐Ÿญ Jerry ์™€ ๐Ÿ“ก Network๋ฅผ ํ•ฉ์ณ์„œ ๐Ÿš€ Jetwork ํƒ„์ƒ!

ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค NetworkManager๋ฅผ ๊ณ„์† ๋งŒ๋“œ๋Š”๊ฒŒ ์ง€์ณ์„œ ํŒจํ‚ค์ง€๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜€


Spec

  • Async Await๊ณผ Completion Handler ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ request๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์–ด์š” ๐Ÿ‘

  • Enum๋‚ด Request๋ฅผ ์ •์˜ํ•˜์—ฌ ํ•ด๋‹น Request๊ฐ€ ์†ํ•œ API๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์–ด์š” ๐Ÿ‘

  • Request๋‚ด Url, Request๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด parameters, query, headers ๋“ฑ ํ”„๋กœํผํ‹ฐ๊ฐ€ ํ˜ผ๋™๋˜์ง€ ์•Š์•„์š” ๐Ÿ‘

  • Test Code ์ž‘์„ฑ ๐Ÿ‘

enum MockAPI { }

extension MockAPI {
    struct MockRequest: Request {
        typealias Parameter = EmptyParameter
        typealias Response = MockResponse
        
        var urlInfo: URLInfo = .MockAPI(path: "/test")
        var requestInfo: Jetwork.NetworkAPI.RequestInfo<Jetwork.EmptyParameter> = .init(method: .get)
    }
}

extension NetworkAPI.URLInfo {
    
    /// MockAPI host ์ง€์ •
    static func MockAPI(path: String) -> Self {
        return .init(host: "test.api.com", path: path)
    }
}

โœ… TODO

  • Rx๋ฅผ ์ด์šฉํ•˜์—ฌ request ํ˜ธ์ถœ
  • uploadTask, downLoadTask ์ง€์›
  • Interceptor๋ฅผ ์ด์šฉํ•˜์—ฌ retry ๋กœ์ง ๊ตฌํ˜„
  • Error ์„ธ๋ถ„ํ™”

๋„์›€์ด ๋œ ํ”„๋กœ์ ํŠธ & ๋ธ”๋กœ๊ทธ ๐Ÿ™‡โ€โ™€๏ธ

About

๐Ÿญ Jerry + ๐Ÿ“ก Network = ๐Ÿš€


Languages

Language:Swift 100.0%