RESTful для Android, iOS...?
Моя компания перерабатывает свой API и хочет сделать все ПРАВО на это время;) Это настройка...
- Мы доставляем данные клиентам через Интернет.
- Клиенты - мобильные телефоны, такие как iPhone, Androids, J2ME, Blackberry...
- Сервер закодирован в Ruby on Rails
Мы хотим достичь через рамки...
- Используйте ActiveResource для клиентов.
- Структура должна выполнять соединение (REST), синтаксический анализ и (динамически) предоставление моделей
- Лицензия должна быть с открытым исходным кодом.
- Авторизация должна быть включена. Мы используем OAuth и должны предоставлять токен доступа по любому запросу. Может быть как параметр или в HTTP-заголовке?
- Поддержка HTTPS/SSL
- Поддержка pagination and Relationships (с ленивой загрузкой) будет отличной! Otherwize рамки должны быть в состоянии быть приспособлены для этих вещей.
Мы уже нашли следующие структуры и попросим вас, ребята, оценить их. Возможно, один из вас использовал некоторые из них или что-то другое...
- Android: Spring Модуль шаблонов Android Rest
- Spring RestTemplate - это надежный, популярный Java-клиент REST. Модуль шаблона Spring Android Rest Template Module предоставляет версию RestTemplate, которая работает в среде Android.
- Android: Структура фида
- com.google.android.feeds
- Коллекция классов, которая поможет вам создавать контент-провайдеров. Структура специально разработана, чтобы помочь подключить ваше приложение к веб-интерфейсам API.
Ответы
Ответ 1
Я являюсь автором RESTProvider. Еще очень рано, поэтому я бы не рекомендовал использовать его в производстве. Я использую его в нескольких проектах, которые производятся, но я адаптировал большинство кодов к конкретным потребностям. Я попытаюсь получить публичный стабильный API к концу года.
Что касается переделки API, я бы предложил следующее:
- Использование сжатия GZip
- Использовать ETags для кеширования
- Использовать стандарты без изменений (я видел случаи, когда именование изменилось с oauth_token на my_token, что делает большую библиотеку бесполезной без изменений) - OAuth/REST
- Используйте создание/измененную метку времени и удаленные идентификаторы для всех объектов, чтобы включить кеширование на стороне клиента (предложения SQLite conflict):
{ "myobject": { "createdAt": xxxx, "rid": "hashvalue" }}
4а. Используйте хороший способ для идентификации объекта, возвращаемого для пользователя/активности/приложения: opensocial использует "id приложения" + "идентификатор пользователя" + "идентификатор активности"
- Предпочитает JSON над XML
- Предпочитает простоту (наименьшая возможная глубина)
- Возвращает полный объект с отношением один к многим внутри этого объекта:
{ "Родитель":....
"имеет": { "полный объект не только идентификатор" }
}
- Не возвращайте только идентификаторы ( "категория": [2,3,4] должна быть "категория": [{ "имя": "тестирование", "id": 2}, { "name": производство "," id ": 3}})
- Учитывайте, что каждый вызов не зависит друг от друга (т.е. у меня должно быть достаточно информации для вызова http://test.com/object.json для заполнения моих просмотров)
Для документации:
1. предоставить тестовые серверы
2. предоставить cUrl для тестирования
3. предоставить образцы скриптов в java/php/ruby и т.д.
Это все, о чем я могу думать сейчас. Я мог бы добавить ontop этого, поскольку я прихожу с большим количеством предложений.
Ответ 2
Я бы рекомендовал взглянуть на RestKit для iOS
- Высокопроизводительный многопоточный сетевой уровень с простым API для запросов и ответов
- Система сопоставления объектов для сопоставления удаленных полезных нагрузок в локальных объектах декларативно (включая отношения)
- Интеграция с основными данными для обеспечения быстрого локального кэша удаленных данных с возможностями синхронизации
- Поддержка создания исходной базы данных из серии полезных данных JSON
- Конкретная поддержка интеграции с бэкэндами Ruby on Rails (RKRailsRouter)
- Лицензия на Apache
- Используется в производстве в ряде отличных приложений (т.е. Gate Guru)
Ответ 3
Просто добавьте к выбору Spring RestTemplate. Вот ссылка на вызовы https SSL. Надеюсь, это поможет другим. Долго искал это решение.
http://www.makeurownrules.com/secure-rest-web-service-mobile-application-android.html