-
Notifications
You must be signed in to change notification settings - Fork 0
NetworkModule 설명서
Hyunjun edited this page Nov 14, 2024
·
4 revisions
- 아래의 프로토콜에 맞춰서 Endpoint를 생성합니다.
-
scheme의 기본값:https -
validationCode의 기본값:200...500 -
timeout의 기본값:300
-
public protocol Endpoint {
var method: HTTPMethod { get }
var header: [String: String]? { get }
var scheme: String { get }
var host: String { get }
var path: String { get }
var requestTask: RequestTask { get }
var validationCode: ClosedRange<Int> { get }
var timeout: TimeInterval { get }
}Endpoint 예시
enum EndpointExample {
case fetch
}
extension EndpointExample: Endpoint {
var method: HTTPMethod {
switch self {
case .fetch: .get
}
}
var header: [String: String]? {
switch self {
case .fetch: nil
}
}
var host: String { "www.example.com" }
var path: String {
switch self {
case .fetch: return "/fetch"
}
}
var requestTask: RequestTask {
switch self {
case .fetch: .empty
}
}
var validationCode: ClosedRange<Int> { 200...299 }
}-
empty,withParamteres,withObject세가지 유형이 있습니다.-
empty:parameter,query가 없는 요청 -
withParamteres:parameter: [String: Any],query를 가지고 있는 요청 -
withObject:parameter any Decodable,query를 가지고 있는 요청
-
-
아래와 같이 6가지 유형의 task를 설정할 수 있습니다.
let task0 = RequestTask.empty
let task1 = RequestTask.withParamteres()
let task2 = RequestTask.withParamteres(body: ["key": "value"])
let task3 = RequestTask.withParamteres(query: ["queryKey": "queryValue"])
let task4 = RequestTask.withParamteres(body: ["key": "value"], query: ["queryKey": "queryValue"])
let task5 = RequestTask.withObject(body: Body())
let task6 = RequestTask.withObject(body: Body(), query: ["queryKey": "queryValue"])let client = NetworkClient()
let response = client.request(endpoint)-
Response는 보낸URLRequest, 받은Data,URLResponse를 가지고 있습니다.
let urlRequest = response.request
let data = response.data
let urlResponse = response.response[URL Session]
[ReplayKit]
[Git]
[RTMP]
[기타]