HTTPCab
HTTPCab - 一个专为HTTP请求和REST而设计的网络框架。
使用方法
使用`Providers`来结构你的请求
enum ProfileRequests {
case getUserProfile(id: String)
case postUserPhoneNumber(phoneNumber: String)
}
然后你需要指定所有请求所需的数据
extension ProfileRequests: Request {
var baseURL: String {
return "https://your.domain.com"
}
var path: String {
switch self {
case .getUserProfile,
.postUserPhoneNumber:
return "/user"
}
}
var method: Method {
switch self {
case .getUserProfile:
return .get
case .postUserPhoneNumber:
return .post
}
}
var parameters: [String: String]? {
switch self {
case .getUserProfile(id: let id):
return ["user_id": id]
case .postUserPhoneNumber:
return nil
}
}
var body: Any? {
switch self {
case .getUserProfile:
return nil
case .postUserPhoneNumber(phoneNumber: let phoneNumber):
return ["phone_number": phoneNumber]
}
}
var encoder: BodyEncoder? {
switch self {
case .getUserProfile:
return nil
case .postUserPhoneNumber:
return BodyJSONEncoder()
}
}
var headers: [String: String]? {
return nil
}
}
为了使用,你需要指定将处理这个请求的`Provider`
class YourProfileProvider: Provider {
let sessionManager: SessionManager = .default
func getUser(id: String) {
dataRequest {
ProfileRequests.getUserProfile(id: id)
}.response { data, response, error in {
//...
}
}
func updatePhoneNumber(phone: String) {
dataRequest {
ProfileRequests.postUserPhoneNumber(phoneNumber: phoneNumber)
}.response { data, response, error in {
//...
}
}
}
编码
主要有2种编码类型
BodyJSONEncoder
BodyPlistEncoder
你可以通过实现`BodyEncoder`协议来创建自定义编码器
class CustomEncoder: BodyEncoder {
func encode(_ body: Any?) -> Data? {
//...
}
}
许可
MIT许可。有关详细信息,请参阅LICENSE文件