Я пишу приложение для iPhone в качестве хобби, и ему понадобится веб-сервис для предоставления данных. Это не сильно отличается от того, что я делаю на работе, но на работе я пишу только представления и контроллеры. Кто-то другой отвечает за написание модели, и обычно клиенты предоставляют веб-сервис.
Я занимался веб-программированием и раньше, когда все использовали MySQL и PHP, поэтому мои навыки немного устарели, но я уверен, что смогу использовать уже известные мне техники. Однако я не хочу тратить свое время на устаревшие инструменты. Я сообразил, что самое современное - написать REST API. Я думал, что должны быть довольно хорошие фреймворки, которые в значительной степени просто предоставляют вам REST API с функциональностью CRUD, как только вы определили модель.
Думаю, у меня такой вопрос: как можно быстрее всего запустить REST API? Я просто хочу сосредоточиться на написании приложения для iPhone и не тратить слишком много времени на этот API. Было бы здорово, если бы я мог получить веб-администрирование и историю изменений. Я также должен добавить, что API не должен быть общедоступным, поэтому поддержка аутентификации также будет отличной.
Просто быть чистым. Я бы не возражал против PHP-фреймворка. На самом деле это могло быть лучше, так как я знаю, что мой текущий хостинг поддерживает это.
Ответы:
РЕДАКТИРОВАТЬ:
Ссылки ниже, которые, по-видимому, были хорошими в течение 3 лет, больше не работают, поэтому я пошел и нашел пару новых руководств, которые, как мне кажется, останутся на некоторое время. Они находятся на сайте Рэя Вендерлиха, очень уважаемого учебного сайта для разработчиков iOS. Первая статья на самом деле ссылается на неработающие ссылки ниже, но сама по себе полная:
Как написать простой веб-сервис PHP / MySQL для приложения iOS
а у второго есть небольшая изюминка. Он использовал parse.com на сервере и AFNetworking. Оба из них довольно хороши.
Как синхронизировать основные данные с веб-службой - часть 1
Я исправил неработающие ссылки ниже, найдя статьи на обратном пути. Людям нравятся ссылки, поэтому я буду их хранить. Ссылки выше должны дать больше пищи для размышлений.
Я делаю то же самое со своим приложением для iphone. Я нашел эту статью о создании RESTful API на PHP:
https://web.archive.org/web/20130910164802/http://www.gen-x-design.com/archives/create-a-rest-api-with-php/
Здесь также есть дополнительная статья:
https://web.archive.org/web/20130323001500/http://www.gen-x-design.com/archives/making-restful-requests-in-php/
со ссылкой на исходный код внизу статьи.
источник
Я запрограммировал REST API в ZEND Framework с помощью Zend_Rest_Controller, на iPhone я использовал ASIHTTPRequest . Мой опыт работы с обоими хорошими. Сначала у меня были проблемы с настройкой ZEND и подключением его к mySQL, но как только я понял, как это сделать, я смог очень быстро написать API. Я могу поделиться с вами дополнительной информацией, если у вас возникнут дополнительные вопросы.
РЕДАКТИРОВАТЬ: похоже, нет официальной документации
Zend_Rest_Controller
. Эта ссылка описывает, как использовать его для создания вашего API. Вам просто нужно отключить рендеринг вinit()
своем подклассе и реализовать методы для каждого вызова REST.источник
Просто чтобы вы знали:
В итоге я использовал Ruby on Rails.
РЕДАКТИРОВАТЬ: Поскольку этот ответ был отвергнут из-за того, что он не указывал причину выбора Ruby on Rails, а также не указывал, как написать с ним REST API, я подумал, что дам вам свою мотивацию и несколько простых инструкций.
Я начал читать книгу о Ruby on Rails и понял, что все, что мне нужно сделать, это использовать скаффолдинг, и я получил JSON REST API бесплатно.
Вот хорошее руководство для начала: http://guides.rubyonrails.org/getting_started.html
Когда ваша среда Ruby on Rails запущена и работает, создать REST API не сложнее, чем запустить:
$ rails generate scaffold Post name:string title:string content:text
(Пример из приведенной выше ссылки.) Я также обнаружил, что Rails очень легко и бесплатно развернуть на heroku , а это значит, что мне не нужно было платить за хостинг для моего базового REST API с низким трафиком. Есть много других причин, по которым я очень рад работать с Ruby on Rails, но это выходит за рамки этого вопроса.
источник
Я последовал довольно простому руководству по созданию RESTful API с помощью PHP:
Кори Мейнард - Создание RESTful API с помощью PHP
Основная концепция включает:
источник
А как насчет Python?
Я бы использовал Python, Django и Piston.
Без опыта работы с Python или Django, вероятно, вам понадобится день, чтобы разработать это решение, а весь код протестирован и работает .
источник
Если вы хотите использовать PHP, я рекомендую использовать фреймворк CodeIgniter с REST-сервером Фила Стерджена:
http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2
https://github.com/philsturgeon/codeigniter-restserver
источник
Ознакомьтесь со следующим классом PHP, который следует за MVC. http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html
Надеюсь это поможет.
источник
Если вы уже знаете PHP, нет ничего плохого в бэкэнде PHP / MySQL. Вы можете отправлять все ответы в формате XML-файла plist, совместимого с iPhone, и мгновенно преобразовывать ответ в структуру данных NSDictionary / NSArray / NSNumber с помощью этого короткого фрагмента кода:
NSString *response = [request responseString]; NSData* plistData = [response dataUsingEncoding:NSUTF8StringEncoding]; NSPropertyListFormat format; NSString *errorStr; NSDictionary* plist = [NSPropertyListSerialization propertyListFromData:plistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&errorStr];
Я также использую пакет ASIHTTP для формирования URL-адресов, отправки асинхронных запросов и получения ответов, я очень рекомендую его:
http://allseeing-i.com/ASIHTTPRequest/
источник
Для веб-службы вы должны использовать те языки, которые вам удобны. Подойдет любой язык, который может формулировать ответы REST на запросы.
Тем не менее, если вы хотите, чтобы что-то работало быстро, я предлагаю использовать Python в Google App Engine. Это бесплатно, и вы можете использовать Java вместо Python, если хотите. App Engine поддерживает аутентификацию с использованием OpenID и / или учетных записей Google (не уверен, что они исключают друг друга), так что это должно упростить кодирование.
Что касается выполнения запросов на устройстве iOS, я предлагаю использовать ASIHTTPRequest .
источник
Другой вариант - restSQL, сверхлегкий фреймворк персистентности. См. Http://restsql.org . Он поддерживает MySQL и PostgreSQL и работает в стандартном контейнере Java EE, например Apache Tomcat.
restSQL - очень нетрадиционный уровень доступа к данным. restSQL не является объектно-ориентированным представлением базы данных. Он представляет плоские или иерархические «представления» таблиц реляционной базы данных. Эти представления можно запрашивать и обновлять через простой HTTP или Java API на основе REST. Интерфейс HTTP основан на принципах REST, которые используют встроенные функции HTTP, а не абстрагируются от них.
Вам нужен REST API с функциональностью CRUD, и это как раз то, что нужно для restSQL. Вы можете сделать это без кода. Просто определите свои ресурсы SQL через файлы XML и начните выполнять для них HTTP-вызовы с полной поддержкой CRUD.
источник