Estoy usando AlamoFire para realizar una solicitud de API. Conectarse a la API ha sido bastante sencillo, lo que ha sido un desafío enorme es consultar la API.

Estoy intentando crear una cadena de consulta similar a esta:

https://api-fxtrade.oanda.com/v3/instruments/USD_CAD/candles?price=BA&from=2016-10-17T15%3A00%3A00.000000000Z&granularity=M1

Siento que he explorado mucho Internet en busca de documentación sobre el tema y me he quedado corto.

¿Alguien tiene algún recurso o consejo que compartir sobre las cadenas de consulta?

0
bobdawg 17 ene. 2017 a las 07:34
¿Su pregunta es sobre cómo generar una cadena de consulta para una solicitud de AlamoFire en Swift, o cómo extraer los componentes de una cadena de consulta? ¿O algo mas?
 – 
Dai
17 ene. 2017 a las 07:44
Mi pregunta es ¿cómo puedo generar una cadena de consulta?
 – 
bobdawg
17 ene. 2017 a las 07:48

1 respuesta

La mejor respuesta

La forma más fácil de hacer una cadena de consulta es usar URLComponents, que maneja todo el porcentaje de escape por usted:

// Keep the init simple, something that you can be sure won't fail
var components = URLComponents(string: "https://api-fxtrade.oanda.com")!

// Now add the other items to your URL query
components.path = "/v3/instruments/USD_CAD/candles"
components.queryItems = [
    URLQueryItem(name: "price", value: "BA"),
    URLQueryItem(name: "from", value: "2016-10-17T15:00:00.000000000Z"),
    URLQueryItem(name: "granularity", value: "M1")
]

if let url = components.url {
    print(url)
} else {
    print("can't make URL")
}

Eso es con Swift puro, con el que debes familiarizarte. Una vez que domine los conceptos básicos, Alamofire puede simplificarlo para usted:

let params = [
    "price": "BA",
    "from": "2016-10-17T15:00:00.000000000Z",
    "granularity": "M1"
]
Alamofire.request("https://api-fxtrade.oanda.com/v3/instruments/USD_CAD/candles", parameters: params)
    .responseData { response in
        // Handle response
    }
1
Code Different 17 ene. 2017 a las 08:15
¡Muchas gracias, aprecio la ayuda!
 – 
bobdawg
17 ene. 2017 a las 08:34