How do I add JSON parameters to Moya library?

364 Views Asked by At

I'm trying to add parameters to OpenWeather's Geocoding API

But I couldn't find how to add a "&lat=40&lon=40" for example

Here's my implementation, what should I do instead?

enum Networking{
    case showLatLon(_ lat: String,_ lon: String)
    case showName(_ name: String)
}

Then here's the extension

extension Networking: TargetType{

    
    
    var baseURL: URL{return URL(string: "https://api.openweathermap.org/data/2.5/weather?appid=[API_Key]")!}
    
    var path: String {
        switch self{
//        case .showLatLon(let lat, let lon):
//            return "&lat=\(lat)&lon=\(lon)"
        case .showName(let name):
            return "&q=\(name)"
        case .showLatLon:
            return ""
        }
    }
    
    var method: Moya.Method {
        switch self{
            
        case .showLatLon, .showName:
            return .get
    }
    }
    var task: Task {
        switch self{
        case .showLatLon(let lat, let lon):
            print(path)
            return .requestParameters(parameters: ["lat": lat, "lon": lon], encoding: URLEncoding.default)
            
        case .showName(let name):
            return .requestParameters(parameters: ["name":name], encoding: URLEncoding.default)
        }
    }
    
    var headers: [String : String]? {
        return ["Content-Type":"application/json"]
    }
    

}
1

There are 1 best solutions below

0
Hammer Class On

Change Encoding style from URLEncoding.default to URLEncoding.queryString