Форум программистов, компьютерный форум CyberForum.ru

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

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

Facebook API Objective-C
Работа с API железяки Objective-C
Работа с API железяки
API и XCode
Помощь по API! Objective-C
Поддержка armv7 и armv7s
API Tumblr
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
noname_club
 Аватар для noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 577
22.05.2014, 13:41     Поддержка нескольких версий API в одном проекте #2
версии API нужны для, того чтобы старые приложения могли работать со старым API. А новые с новым API, при этом методы запросов могут быть идентичными.
это значит прежде всего то что, в одном приложении будет все равно 1 версия API, актуальная на текущий момент.
Изменение версии API это просто сообщение серверу, API какой версии приложение запрашивает.
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
22.05.2014, 14:05  [ТС]     Поддержка нескольких версий API в одном проекте #3
Может я неправильно сказал, а может и не до конца понимаю, что есть API... Но смысл в следующем: есть тестовый сервак и есть рабочий, как между ними переключаться в проекте? На них разные API - один и тот же запрос выдает разные ответы. Или для получения одних данных требуются разные запросы. Под этим же и подразумевается, что версии API разные?
Как это в проекте поддерживать? Как переключаться с тестового на рабочий?

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

Приложение с использованием rest api
Objective-C Как писать приложение для двух версий iOS?
Работа @property в одном классе в разных методах Objective-C
Использование NSManagedObject's повсеместно в проекте
В проекте быстро растет количество файлов исходного кода. Все ли я делаю так? Objective-C

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

Или воспользуйтесь поиском по форуму:
noname_club
 Аватар для noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 577
23.05.2014, 09:01     Поддержка нескольких версий API в одном проекте #12
http://stackoverflow.com/questions/4...only-statement

в настройках проекта можно флаг добавить соотвествующий, чтобы он макрос дефайнил при релизе.
Yandex
Объявления
23.05.2014, 09:01     Поддержка нескольких версий API в одном проекте
Ответ Создать тему
Опции темы

Текущее время: 10:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru