美文网首页
Optional request parameters(可选的请

Optional request parameters(可选的请

作者: 心印印心 | 来源:发表于2017-06-29 21:05 被阅读0次

    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(可选的请

          本文链接:https://www.haomeiwen.com/subject/ddpvcxtx.html