iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0

請求設置函數

private func handelHttpMethod <E: Encodable>(method: HttpMethod, path: ApiPathConstantse, parameter: E?) -> URLRequest {
    let baseUrl = NewWorkConstants.httpsBaseUrl + NewWorkConstants.appServer + path.rawValue
    let url = URL(string: baseUrl)
    var urlRequest = URLRequest (url: url!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10)
    let httpType = ContenType.json.rawValue
    urlRequest.allHTTPHeaderFields = [HttpHeaderField.contentType.rawValue : httpType]
    urlRequest.httpMethod = method.rawValue
    
    let dicl = try? parameter.asDictionary()
    
    switch method {
    case .get:
        let parameters = dicl as? [String : String]
        urlRequest.url = requestwithURL(urlString: urlRequest.url?.absoluteString ?? "",parameters: parameters ?? [:])
    default:
        urlRequest.httpBody = try? JSONSerialization.data(withJSONObject: dicl ?? [:], options: .prettyPrinted)
    }
    return urlRequest
}

handelHttpMethod 函數是一個泛型函數,它接受三個參數:

  1. method: 代表 HTTP 請求的方法,可以是 GET、POST、PUT 等。
  2. path: 代表 API 的路徑,通常是一個定義了 API 端點的常數。
  3. parameter: 是一個泛型型別 E,代表請求的參數,這個參數將被編碼並添加到請求中。
    函數功能
    函數根據傳入的請求方法、API 路徑和參數創建一個 URLRequest 對象。
    它設置了請求的 URL、HTTP 方法、HTTP 標頭以及請求主體(如果是 POST 或其他需要主體的請求)。
    如果是 GET 請求,則會將參數添加到 URL 查詢中,以便將其傳遞給伺服器。
    最後,它返回配置好的 URLRequest 對象,以供 requestData 函數使用。
    這個輔助函數的主要目的是封裝請求設置的細節,使主要的 requestData 函數保持簡潔和易讀。

上一篇
Day 20 泛型API 2
下一篇
Day 22 泛型API 4
系列文
swift 新手路程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言