Я пишу приложение для iPhone в качестве проекта хобби, и ему понадобится веб-сервис, чтобы предоставить ему данные. Это не очень отличается от того, что я делаю на работе, но на работе я только пишу виды и контроллеры. Кто-то другой отвечает за запись модели, и обычно клиенты предоставляют веб-сервис.
Я проработал некоторое веб-программирование раньше, когда все использовали MySQL и PHP, поэтому мои навыки немного устарели, но я уверен, что смогу вытащить его из тех методов, которые я уже знаю. Однако я не хочу тратить свое время на использование устаревших инструментов. Я понял, что современное состояние – это написать REST API. Я думал, что там должны быть довольно хорошие рамки, которые в значительной степени просто дают вам REST API с функциональностью CRUD, как только вы определили модель.
Я предполагаю, что мой вопрос: каким будет самый быстрый способ запустить REST API? Я просто хочу сосредоточиться на написании приложения для iPhone и не тратить слишком много времени на этот API. Было бы здорово, если бы я мог получить веб-администрирование и историю изменений. Я также должен добавить, что API не должен быть общедоступным, поэтому поддержка аутентификации также будет отличной.
Просто быть чистым. Я бы не возражал против структуры PHP. На самом деле это может быть лучше, поскольку я знаю, что мой текущий хостинг поддерживает его.
РЕДАКТИРОВАТЬ:
Ссылки ниже, которые, по-видимому, были хорошими в течение 3 лет, больше не работают, поэтому я пошел и нашел пару новых учебников, которые, как я думаю, будут придерживаться какое-то время. Они находятся на сайте Ray Wenderlich, очень уважаемом сайте ios dev. Первая статья на самом деле ссылается на неработающие ссылки ниже, но она полна сама по себе:
Как написать простой веб-сервис PHP / MySQL для приложения iOS
и второй имеет немного поворот к нему. Он использовал parse.com на бэкэнд и AFNetworking. Оба они превосходны.
Как синхронизировать основные данные с веб-службой – часть 1
Я исправил сломанные ссылки ниже, найдя статьи в обратном порядке машины. Люди, похоже, любят ссылки, поэтому я их сохраню. Ссылки выше должны обеспечить больше пищи для размышлений.
Я делаю то же самое с моим iphone-приложением. Я нашел эту статью о создании RESTful API в PHP:
и здесь также есть следующая статья:
со ссылкой на исходный код в нижней части статьи.
Я запрограммировал REST API в ZEND Framework с помощью Zend_Rest_Controller, на iPhone я использовал ASIHTTPRequest . Мой опыт с обоими хорошими. В начале у меня возникли проблемы с настройкой ZEND и подключением к mySQL, но как только я понял, как это сделать, я смог быстро написать API. Я могу поделиться с вами дополнительной информацией, если у вас возникнут дополнительные вопросы.
EDIT: Кажется, нет официальной документации по Zend_Rest_Controller
. Эта ссылка описывает, как использовать ее для создания вашего API. Вам просто нужно отключить рендеринг в init()
вашего подкласса и реализовать методы для каждого вызова REST.
Просто что бы ты знал:
Я закончил использование Ruby on Rails.
EDIT: поскольку этот ответ был подавлен для того, чтобы не объяснять причину выбора 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:
Corey Maynard – создание RESTful API с PHP
Основная концепция включает:
Как насчет Python?
Я бы использовал Python, Django и Piston.
Не имея опыта работы с Python или Django, возможно, вам понадобится один день для разработки этого решения, и весь код будет проверен и проверен на работоспособность .
Если вы хотите использовать PHP, я рекомендую использовать схему CodeIgniter с REST-сервером Phil Sturgeon:
http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2
Ознакомьтесь с следующим классом PHP, который следует за MVC. http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html
Надеюсь это поможет.
Если вы уже знаете PHP, в PHP / MySQL нет ничего плохого. Вы можете отправлять все ответы в формате XML plist xml и мгновенно превращать ответ в структуру данных 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-адресов, отправки асинхронных запросов и получения ответов, я настоятельно рекомендую:
Вы должны использовать любые языки, которые вам удобны для веб-службы. Любой язык, который может формулировать ответы 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.