有没有办法使用 Foursquare 的 API 来搜索包括类别 ID 和价格参数?

Is there a way to use Foursquare's API to search including category ID and price parameter?

我正在尝试使用 Foursquare API 进行搜索,但同时指定了类别 ID 和价格。使用请求 GET https://api.foursquare.com/v2/venues/explore 我可以指定价格但不能指定类别 ID,但是我可以输入查询 - 这让我想知道查询参数到底做了什么?

如果我使用请求 GET https://api.foursquare.com/v2/venues/search 我可以指定类别 ID,但是我不能指定价格参数。

最后,我将 Swift 与 pods FoursquareAPI & SwiftyJSON 一起使用,所以我的相关代码如下所示:

func getObject(limit: Int, category: String){
    let client = FoursquareAPIClient(clientId: "JMBLK0SDZ0N2NF5TG3UCLMOF4FA5FKA14AIOZ4P4TS4MHEWO", clientSecret: "<my client secret>")

    let parameter: [String: String] = [
        "near": destination!,
        "limit": "1",
        "query": category!,
        "price": String(describing: budget!),
        ];

    client.request(path: "venues/explore", parameter: parameter) { result in

        switch result {
        case let .success(data):
            print("Success")
            guard let json = try? JSON(data: data) else{
                print("\(#function): Unable to retrieve json object")
                return
            }
            if json["meta"]["code"] == 200{
                self.parse(jsonObject: json)
            }
        case let .failure(error):
            // Error handling
            switch error {
            case let .connectionError(connectionError):
                print(connectionError)
            case let .responseParseError(responseParseError):
                print(responseParseError)   // e.g. JSON text did not start with array or object and option to allow fragments not set.
            case let .apiError(apiError):
                print(apiError.errorType)   // e.g. endpoint_error
                print(apiError.errorDetail) // e.g. The requested path does not exist.
            }
        }//end switch
    }//end client.request
}

看来有两个选择:

  1. 使用 /explore 端点,使用 pricesection 参数,其中 section 是 - food 之一drinkscoffeeshopsartsoutdoorssights、等等

  2. 使用 /explore 端点,使用 pricequery 参数,其中 query 是匹配 Foursquare category name[ 的字符串=28=]

在我的有限测试中,第二个选项产生了不错的结果。例如,GET 请求:

api.foursquare.com/v2/venues/explore?near=SOME,%20LOCATION&price=3&query=Deli%20/%20Bodega

// client_id, client_secret, and v params will all be needed as well

returns 个价格范围在 3 的场馆,并且只有 "Deli / Bodega" 类别的场馆。

"Coffee Shop" 类别的类似搜索产生了相关结果。

对于阅读此主题的任何人,我找到了比 Brett 的更好的解决方案:

/search/recommendations 端点。我猜它是新的,所以它没有与其他 API 文档一起列出,但它允许指定 categoriesprice 以及 localTimelocalDay这允许您指定在特定时间开放的场所。

还有很多其他很酷的参数,例如features,我认为这是该端点独有的,值得一试。