Optional request parameters(可选的请求参数)--Moya文档

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

总结 这小节的核心:

  1. 可选参数的实现(有值则有参数传递给服务器,无值则没有参数传递.有自动化的含义在里面)

你可能感兴趣的:(Optional request parameters(可选的请求参数)--Moya文档)