Alamofire 获取请求和 JSON 响应(Yelp API)

Posted

技术标签:

【中文标题】Alamofire 获取请求和 JSON 响应(Yelp API)【英文标题】:Alamofire Get Request & JSON Response (Yelp API) 【发布时间】:2017-07-13 17:32:17 【问题描述】:

我正在尝试使用 Yelp 的业务搜索 API (https://www.yelp.ca/developers/documentation/v3/business_search) 通过 Alamofire 发送 http get 请求,但我在写出语法时遇到了麻烦。我是初学者,第一次使用 Alamofire,因此不胜感激!我也在尝试设置“术语”和“位置”参数。完成后,我希望通过 SwiftyJSON 进行解析,但不确定如何/在何处接收响应。

这是我当前的代码:

import UIKit
import Alamofire
import SwiftyJSON

private let reuseIdentifier = "cafeCell"

class CafeListCollectionViewController: 
UICollectionViewController,UICollectionViewDelegateFlowLayout 


override func viewDidLoad() 
    super.viewDidLoad()

    let requestParams: Parameters = ["term": "cafe", "location": "Montreal, QC"]

    //Http request

    let apiToContact = "https://api.yelp.com/v3/businesses/search"

    Alamofire.request(.GET, apiToContact, requestParams).responseJSON  (responseObject) -> Void in

        print(responseObject)

        if responseObject.result.isSuccess 
            let resJson = JSON(responseObject.result.value!)
            success(resJson)
        
        if responseObject.result.isFailure 
            let error : NSError = responseObject.result.error!
            failure(error)
        

    

如果这听起来像一个简单的问题,我很抱歉。我是编程新手,希望能得到帮助。非常感谢!

【问题讨论】:

您的具体问题是什么?错误信息?请阅读minimal reproducible example 并相应地更新您的问题。 【参考方案1】:

问题可能是您正在查看 Swift 2 示例,但使用 Swift 3 编写。这是 Swift 3 版本:

    let requestParams: Parameters = ["term": "cafe", "location": "Montreal, QC"]

    //Http request

    let apiToContact = "https://api.yelp.com/v3/businesses/search"


    Alamofire.request(apiToContact, method: .get, parameters: requestParams, encoding: URLEncoding.default, headers: nil).responseJSON  (responseObject) in
        print(responseObject)
        if responseObject.result.isSuccess 
            let resJson = JSON(responseObject.result.value!)
            success(resJson)
        
        if responseObject.result.isFailure 
            let error : NSError = responseObject.result.error!
            failure(error)
        
    

您还需要来自 Yelp 的 API 令牌才能获得有效响应。

【讨论】:

我在哪里应用 API 令牌? yelp.com/developers/documentation/v3/authentication 这些说明将引导您了解如何获取 API 密钥

以上是关于Alamofire 获取请求和 JSON 响应(Yelp API)的主要内容,如果未能解决你的问题,请参考以下文章

swift 3 alamofire - 获取请求给出响应序列化失败

在 Swift 中使用 JSON 的 Alamofire 请求后,如何在 AnyObject 中转换 <AnyObject> 响应?

Alamofire:有没有办法在失败的情况下获取响应数据?

Alamofire:如何获取部分响应 JSON

如何显示来自 Alamofire 请求的 JSON 数组响应的某些部分

如何使用新的 Swift 3 和 Alamofire 解析 JSON(字典和数组)