HTTPCab 3.1.3

HTTPCab 3.1.3

Alex Zgurskiy 维护。



HTTPCab 3.1.3

  • Aleksey Zgurskiy

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文件