docs_CN/Examples/OptionalParameters.md
假设你想调用 api/users?limit=10 也希望能调用 api/users:
public enum MyService {
case users(limit: Int?)
}
extension MyService: TargetType {
//...
public var task: Task {
switch self {
case .users(let limit):
var params: [String: Any] = [:]
params["limit"] = limit
return .requestParameters(parameters: params, encoding: URLEncoding.default)
default:
return .requestPlain
}
}
//...
}
在这个例子中 params["limit"] = nil 等同于移除key limit的值 。
这对任何类型的请求都适用, 因为方法的类型是在单独的属性中定义的
extension MyService: TargetType {
//...
public var method: Moya.Method {
switch self {
case .emailAuth:
return .post
default:
return .get
}
}
//...
}
您 必须 像上面演示的那样添加可选参数, 每行一个。 如果您试着把它们初始化在一行中,那么可选参数在值为nil时不会被移除 例如:
//...
// This won't work!
public var parameters: [String: Any]? {
switch self {
case .users(let limit):
let params: [String: Any] = ["limit": limit]
return .requestParameters(parameters: params, encoding: URLEncoding.default)
default:
return .requestPlain
}
}
//...
在这种情况下,如果limit值为 nil, URL请求将包含一个像这样的参数 api/users?limit=nil .