как перенаправить запросы GCDWebServer на внешний хост из приложения iOS

В своем приложении для iOS я пытаюсь добавить простой обработчик перенаправления GCDWebServer следующим образом:

self.webServer!.addHandlerForMethod("GET", 
    pathRegex: "/api/.*",
    requestClass: GCDWebServerRequest.self,
    processBlock: { request in
        let url = NSURL(string: "http://external.host\(request.URL!.absoluteString)")
        return GCDWebServerResponse(redirect: url, permanent: true)
    }
)

но мой url уродлив. Как правильно построить NSURL из заданных host и GCDWebServerRequest.URL?


person Robert Carter Mills    schedule 04.10.2015    source источник
comment
Каково значение url? Кажется, что ваша текущая конструкция может закончиться двумя схемами, которые будут недействительными.   -  person Aaron Brager    schedule 05.10.2015
comment
Ах, это nil ! Похоже, мой url действительно уродлив. Если я жестко запрограммирую внешний URL-адрес, такой как let url = NSURL(string: "http://external.host/api/playthrough_ids"), тогда он сработает. Поэтому я отредактирую вопрос, чтобы перефразировать «как правильно сформировать NSURL с хостом + request.URL».   -  person Robert Carter Mills    schedule 05.10.2015


Ответы (1)


request.URL является объектом NSURL, и поэтому использование его для формирования другого URL-адреса с другим хостом требует его разделения путем доступа к его path следующим образом:

let url = NSURL(string: "http://host.com\(request.URL!.path)")
person Robert Carter Mills    schedule 05.10.2015