2015-08-11 4 views
0

Итак, у меня есть приложение, которое часто обращается к различным конечным точкам в нашем API, и каждый запрос в значительной степени имеет те же пользовательские заголовки, которые были отправлены с ним. Я хотел бы знать, есть ли способ глобально настроить настраиваемый заголовок, используя NSURLSessionConfiguration, и если да ... что такое синтаксис в Swift и где бы я его поместил? AppDelegate? Я сделал некоторые поиски и не могу найти хороший пример этого. Это плохая практика? Не выполнимо?Как глобально настроить пользовательские заголовки в приложении Swift?

EDIT:

Я использую Alamofire для запроса/ответа, так что мне нужно что-то, что отличает их по всему миру, так что эта библиотека (и другие, которые происходят использовать NSURLSession) будет посылать заголовки по умолчанию.

+0

Подклассы .... – nhgrif

+0

Хорошо, что вы могли бы создать класс и открыть общедоступный класс func, который будет делать запросы по типу ... так что вы можете выбрать конечную точку или тип, в который должны быть добавлены заголовки ... А также его центральный способ сделать это –

ответ

2

У нас есть это задокументированное право в README.

var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:] 
defaultHeaders["DNT"] = "1 (Do Not Track Enabled)" 

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 
configuration.HTTPAdditionalHeaders = defaultHeaders 

let manager = Alamofire.Manager(configuration: configuration) 

Затем вам нужно использовать новый manager вместо глобального Alamofire одноплодных.

manager.request(.GET, "https://httpbin.org/get") 
     .responseJSON { _, _, result in 
      debugPrint(result) 
     } 

Это будет прикрепить заголовок DNT на каждый запрос, который отправляется через этот manager экземпляр.

Каждый экземпляр Manager имеет свой собственный внутренний NSURLSession, который также имеет собственную конфигурацию. Поэтому это переопределение работает только для этого экземпляра Manager. Если вам нужны эти заголовки на другом экземпляре Manager, вам придется настроить его таким же образом.

+0

И где бы вы это установили? Пожалуйста, простите мое невежество ... Но это по-прежнему не устанавливает правильный стандартный заголовок по умолчанию? Я все еще новичок в разработке iOS, поэтому некоторые из лучших практик по-прежнему немного чужды мне. – kevindeleon

+0

Вы можете установить только глобальный заголовок за сеанс. Это так же глобально, как вы можете получить. Это не ограничение Alamofire, а ограничение от Apple. Что касается того, где это установить, что-то вроде синтаксиса «NetworkManager», который предоставляет этот объект 'manager', а также любые другие, которые вам нужны, будут выполнять эту работу. – cnoon

+0

Спасибо за объяснение. Хорошо знать. – kevindeleon

Смежные вопросы