Vapor `client.get`,转换并返回 json
Posted
技术标签:
【中文标题】Vapor `client.get`,转换并返回 json【英文标题】:Vapor `client.get`, transform and return json 【发布时间】:2017-01-26 07:28:49 【问题描述】:我正在尝试从另一个 Web 服务获取数据,然后对其进行转换并返回。我在文档中找到了一个 Spotify 示例,但我不确定如何返回 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
我在尝试构建时收到此错误:error: return expression of type '[Polymorphic]?' does not conform to 'ResponseRepresentable'
【问题讨论】:
【参考方案1】:您的result.data
是Content
,可以是任何值。你需要先确保它是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]
)
guard
result.status == .ok,
let artistsJson = result.data["artists"] as? JSON
else
throw Abort.serverError
return artistsJson
【讨论】:
以上是关于Vapor `client.get`,转换并返回 json的主要内容,如果未能解决你的问题,请参考以下文章
Swift Vapor 服务器:如何在获取请求中返回嵌套字典?
在 Swift Vapor 中返回响应可表示对象集合的最佳方法是啥?
为啥在使用 Discord Python API 时 client.emojis,client.get all emojis() 的较新版本返回空列表?