Skip to content

ASNetworkKit

Sangwon edited this page Dec 1, 2024 · 1 revision

NetworkManager

  • 네트워크 동작을 관리하는 객체
struct ASNetworkManager: ASNetworkManagerProtocol {
    private let urlSession: URLSessionProtocol
    private let cacheManager: CacheManagerProtocol
}

엔드포인트

  • http 요청의 url 구성요소를 정의하고 속성을 안전하게 업데이트하는 프로토콜
public protocol Endpoint<Path> {
    associatedtype Path: CustomStringConvertible
    var scheme: String { get }
    var host: String { get }
    var path: Path { get set }
    var method: HTTPMethod { get set }
    var headers: [String: String] { get set }
    var body: Data? { get set }
    var queryItems: [URLQueryItem]? { get set }
    var url: URL? { get }
    func update<T>(_: WritableKeyPath<Self, T>, with _: T) -> Self
}

네트워크 요청 전송

  • endpoint에게 type(get, post 등)의 요청을 보내는 함수
  • body를 넣을 수 있으며
  • option으로 캐싱 유무를 전달
func sendRequest(
    to endpoint: any Endpoint,
    type: HTTPContentType,
    body: Data? = nil,
    option: CacheOption = .both
) async throws -> Data

Content-type

  • HTTP 요청의 Content-Type을 정의하고, 해당 타입에 맞는 헤더와 바디를 생성하는 기능 제공
enum HTTPContentType {
    case none
    case json
    case multipart

    func header(_ boundary: String) -> [String: String] {}
    func body(_ boundary: String, with data: Data?) -> Data? {}
}

iOS07 프로젝트 일지

📚 문서

🫶🏻 팀 기록

🎤 프로젝트

💡 핵심 경험

🚨 트러블 슈팅

📔 학습 정리

🪄 QA

Clone this wiki locally