Optional request parameters(可选的请求参数)
假设你想调用api/users?limit=10同时也想调用 api/users:
public enum MyService {
case users(limit: Int?)
}
extension MyService: TargetType {
//...
public var parameters: [String: Any]? {
switch self {
case .users(let limit):
var params: [String: Any] = [:]
params["limit"] = limit
return params
default:
return nil
}
}
//...
}
在这种情况下 params["limit"] = nil将会移除对象的limit关键字
这将适合任何类型请求,因为方法定义在不同的属性中.
extension MyService: TargetType {
//...
public var method: Moya.Method {
switch self {
case .emailAuth:
return .post
default:
return .get
}
}
//...
}
重要提示
你必须像上面的方式来添加可选参数;如果按下的方式的话,可选参数将不会被移除
//...
// This won't work!
public var parameters: [String: Any]? {
switch self {
case .users(let limit):
let params: [String: Any] = ["limit": limit]
return params
default:
return nil
}
}
//...
这种情况下,如果limit为nil 那么URL请求将会是 api/users?limit=nil
总结 这小节的核心:
- 可选参数的实现(有值则有参数传递给服务器,无值则没有参数传递.有自动化的含义在里面)