2017-02-02 2 views
0

Я пытаюсь сделать простой запрос на получение доступа к API Google Адресов с помощью веб-сервиса Steam.Борьба с клиентом Vapor

Это то, что мой контроллер выглядит следующим образом:

import Vapor 
import HTTP 
import VaporPostgreSQL 

final class MainController { 

var currentDroplet: Droplet! 

func addRoutes(drop: Droplet) { 

    currentDroplet = drop 
    drop.get("places",String.self, String.self, handler: getNearbyPlaces) 

} 

func getNearbyPlaces(request: Request, lat: String, long: String) throws -> ResponseRepresentable { 

    let googleAPIKey = "MY_KEY" 
    let googlePlacesBaseURL = "https://maps.googleapis.com/maps/api/place/nearbysearch" 

    let url = googlePlacesBaseURL + "/json?location=\(lat),\(long)&radius=500&types=food&key=" + googleAPIKey 

    print(url) 

    let apiResponse = try drop.client.get(url) 

    print(apiResponse) 

    return apiResponse.json != nil ? apiResponse.json! : "Something went bad" 


    } 
} 

Это должно быть так же просто, как, впрочем, когда я называю его, запрос продолжает висеть в течение длительного времени, а затем возвращает 500. Обратите внимание, что напечатанный url в консоли отлично работает непосредственно в браузере. Я не мог найти полезный способ поймать и отладить любые ошибки.

+0

- правильный URL-адрес? – muescha

+0

Да. URL-адрес, записанный на консоль, отлично работает в браузере –

+0

, браузер самостоятельно преобразует URL-адрес в нужный формат - если вы вызываете через программу, вам, возможно, нужно его закодировать – muescha

ответ

1

Мне нужно было добавить import Foundation и drop.client = FoundationClient.self в main.swift, чтобы получить аналогичный призыв к работе.

+0

Это было сделано. Также как магия. Большое спасибо! Не могу поверить, что они не указывают, что в Docs ... –

+2

'drop.client'' let'. Он не может быть назначен. Любое другое решение? –