Alamofire 4 Swift 3-GET-request mit Parametern

Baue ich ein Netzwerk-stack mit Alamofire 4 und Swift 3. Nach der Alamofire Richtlinien habe ich einen router für die Endpunkte der Dienste. Derzeit bin ich über die kostenfreie API von OpenWeatherMap, aber ich bin Probleme zu finden, um zu erstellen Sie eine get-Anforderung.
Das ist die url benötigt: http://api.openweathermap.org/data/2.5/weather?q=Rome&APPID=MY_API_KEY. Aufgeklebt auf einen browser, mit einem echten API-Key, es funktioniert und gibt mir wieder meine schönen json-volle Information über das Wetter in der gegebenen Lage.
Auf meine App, die ich einfügen kann, die Parameter als Wörterbuch, aber ich kann nicht einen Weg finden, fügen Sie den api-key an das Ende der url.

Das ist mein enum router:

enum OWARouter: URLRequestConvertible {
      case byCityName(parameters: Parameters)

//MARK: Url
    static let baseURLString = "http://api.openweathermap.org"
    static let apiKey = "MY_APY_KEY"
    static let pathApiKey = "&APPID=\(apiKey)"  
    var method: HTTPMethod {
        switch self {
        case .byCityName:
            return .get
        }
    }

    var path: String {
        switch self {
        case .byCityName:
            return "/data/2.5/weather"
        }
    }

//MARK: URLRequestConvertible
    func asURLRequest() throws -> URLRequest {
        let url = try OWARouter.baseURLString.asURL()
        var urlRequest = URLRequest(url: url.appendingPathComponent(path))
        switch self {
        case .byCityName(let parameters):
            urlRequest = try URLEncoding.default.encode(urlRequest, with: parameters)
            print((urlRequest.url)!)

        }

        urlRequest.httpMethod = method.rawValue
        return urlRequest
     }
    }

Wenn ich das log meiner (urlRequest.- url)! Ich habe diese: http://api.openweathermap.org/data/2.5/weather?q=Rome aber ich kann nicht einen Weg finden, fügen Sie die apiKey.
Was mache ich falsch?

Hab ich auch gemacht ein hässliches test hinzufügen dieser code nach dem drucken:

        var urlRequest2 = URLRequest(url: (urlRequest.url)!.appendingPathComponent(OWARouter.pathApiKey))
        print("URL2: \(urlRequest2)")

Und die log ist URL2: http://api.openweathermap.org/data/2.5/weather/&APPID=My_API_KEY?q=Rom
Wie kommt der api-Schlüssel ist in der Mitte?

Wenn Sie brauchen, das ist die einfache Anfrage code:

   Alamofire.request(OWARouter.byCityName(parameters: ["q":"Rome"])).responseJSON { response in

           print(response.request)
           print(response.response)
           print(response.data)
           print(response.result)

           debugPrint(response)

           if let JSON = response.result.value {
                   print("json: \(JSON)")
           }
        }

Andere Frage...
Wenn ich als Parameter ["q":"Rom"], meine Ausgabe url: http://api.openweathermap.org/data/2.5/weather?q=Rome%2CIT

Zu halten, wie das Komma?

Danke!

Hier Coma(,) verschlüsselt mit %2C
Genau... aber hier bräuchte ich eine url wie: api.openweathermap.org/data/2.5/.... Nach wie vor, diese url funktioniert im browser.

InformationsquelleAutor DungeonDev | 2016-12-28

Schreibe einen Kommentar