2017-01-26 2 views
1

J'essaye de GET des données d'un autre service Web, puis le transforme et le renvoie. J'ai trouvé un exemple Spotify dans les docs, mais je ne suis pas sûr de savoir comment retourner une partie du JSON.Vapor `client.get`, transformer et renvoyer json

drop.get("music") { request in 
    guard let query = request.data["q"]?.string else { 
     throw Abort.badRequest 
    } 

    let result = try drop.client.get(
     "https://api.spotify.com/v1/search", 
     query: ["type": "artist", "q": query] 
    ) 

    return result.data["artists"]?.array 
} 

Je reçois cette erreur lorsque je tente de construire: error: return expression of type '[Polymorphic]?' does not conform to 'ResponseRepresentable'

Répondre

2

Votre result.data est Content, ce qui pourrait être quelque chose. Vous devez d'abord vous assurer que c'est JSON, et vous pouvez le retourner.

drop.get("music") { request in 
    guard let query = request.data["q"]?.string else { 
     throw Abort.badRequest 
    } 

    let result = try drop.client.get(
     "https://api.spotify.com/v1/search", 
     query: ["type": "artist", "q": query] 
    ) 

    guard 
     result.status == .ok, 
     let artistsJson = result.data["artists"] as? JSON 
    else { 
     throw Abort.serverError 
    } 

    return artistsJson 
} 
+0

J'ai bien travaillé, merci! – keegan3d