Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
1

Поддержка нескольких версий API в одном проекте

22.05.2014, 13:29. Просмотров 810. Ответов 11
Метки нет (Все метки)

Такая ситуация: есть два сервера с разными REST Api - рабочий и тестовый.
К проекту в Xcode прикручен github.
Как организовать проект, чтоб можно было коммитить в разные ветки для разных API?
Как вообще в одном проекте можно поддерживать несколько версий API?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2014, 13:29
Ответы с готовыми решениями:

Загрузка DLL библиотек разных версий в одном проекте
Есть две одинаковые DLL библиотеки, но с разными версиями, т.е. набор...

Поддержка приложением различных версий ОС и размеров экрана
Добрый день! подскажите как реализовать различные версии android и различные...

В Ubuntu 10.10 может появиться поддержка установки новейших версий программ
В настоящее время для установки более новых версий программ, чем те, что...

Поддержка M. Speech API
Какая версия поддерживает win 8 и 10?

PyQT5 и SIP несоответствие версий API
Установил пакет Anoconda (W7/64), соответственно из Anoconda promt установил...

11
noname_club
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
22.05.2014, 13:41 2
версии API нужны для, того чтобы старые приложения могли работать со старым API. А новые с новым API, при этом методы запросов могут быть идентичными.
это значит прежде всего то что, в одном приложении будет все равно 1 версия API, актуальная на текущий момент.
Изменение версии API это просто сообщение серверу, API какой версии приложение запрашивает.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
22.05.2014, 14:05  [ТС] 3
Может я неправильно сказал, а может и не до конца понимаю, что есть API... Но смысл в следующем: есть тестовый сервак и есть рабочий, как между ними переключаться в проекте? На них разные API - один и тот же запрос выдает разные ответы. Или для получения одних данных требуются разные запросы. Под этим же и подразумевается, что версии API разные?
Как это в проекте поддерживать? Как переключаться с тестового на рабочий?

Добавлено через 14 минут
А может просто у меня структура кода неправильная.
Вот допустим, мне надо получить некоторые данные.
Для этого я в контроллере создаю NSURLSession, тут же определяю NSURL для запроса, и собственно получаю сами данные через NSURLSessionDataTask.
Это правильно?
NSURL по факту ведь и является тем самым API ?
Как по грамотному то сделать?
0
noname_club
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
22.05.2014, 14:20 4
Как это в проекте поддерживать? Как переключаться с тестового на рабочий?
В разделе "настройки" организовать переключатель между API.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
22.05.2014, 14:28  [ТС] 5
Нет, я точно уверен, что сам пользователь не должен ничего переключать и не должен знать о версиях АПИ.
0
noname_club
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
22.05.2014, 14:30 6
что сам пользователь не должен ничего переключать и не должен знать о версиях АПИ.
Пасхальное яйцо, авторизация администратора. Можно придумать массу способов спрятать дополнительный функционал.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
22.05.2014, 14:36  [ТС] 7
Может в файл .plist прописать URL рабочего сервера, в коде брать этот URL и использовать.
Скоммитить этот файл в ветку мастер.
В проекте поменять на URL тестового сервера и дальше работать с тестовым и коммитить всё в другую ветку.
А когда приложение будет готово, скоммитить всё, кроме файла .plist.
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
22.05.2014, 15:01 8
Цитата Сообщение от aply Посмотреть сообщение
Как организовать проект, чтоб можно было коммитить в разные ветки для разных API?
Как вообще в одном проекте можно поддерживать несколько версий API?
СОздаете 2 ветки и работаете.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
22.05.2014, 15:14  [ТС] 9
2 ветки это понятно. Допустим я работаю с тестовой веткой, все норм. Новые АПИ с тестового сервака накатили на рабочий. Как быть? Мне видится один вариант:
определить дефайн
Objective-C
1
#define MAINURL @"https://server.com/"
Когда надо скоммитить в мастер, меняем
Objective-C
1
#define MAINURL @"https://server1.com/"
Но в один прекрасный момент можно забыть это сделать и собрать рабочую версию со ссылками на тест.
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
22.05.2014, 21:13 10
Objective-C
1
2
3
4
5
#ifdef DEBUG
#define MAINURL @"https://server_test.com/"
#else
#define MAINURL @"https://server_distribution.com/"
#endif
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
23.05.2014, 08:57  [ТС] 11
А где этот DEBUG определить? Или это какая-то встроенная?
С этими директивами никогда не работал, можете поподробнее объяснить, от себя?
0
noname_club
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
23.05.2014, 09:01 12
http://stackoverflow.com/questions/4...only-statement

в настройках проекта можно флаг добавить соотвествующий, чтобы он макрос дефайнил при релизе.
0
23.05.2014, 09:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 09:01

Поддержка нескольких запросво
Поддержка нескольких запросов. вычитл что PDO MYSQL поддерживает несколько...

Поддержка нескольких компиляторов
Привет. Хочу попробовать сделать следующее: В программе есть textEdti,...

C и C++ в одном проекте одновременно
Добрый день. Подскажите пожалуйста можно ли водном проекте использовать C и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru