RESTful для Android, iOS …?

Моя компания перерабатывает свой API и хочет сделать все ПРАВО на это время;) Это настройка …

  • Мы доставляем данные клиентам через Интернет.
  • Клиенты – мобильные телефоны, такие как iPhone, Androids, J2ME, Blackberry …
  • Сервер закодирован в Ruby on Rails

Мы хотим достичь через рамки …

  • Используйте ActiveResource для клиентов.
  • Структура должна выполнять соединение (REST), синтаксический анализ и (динамическое) предоставление моделей
  • Лицензия должна быть с открытым исходным кодом.
  • Авторизация должна быть включена. Мы используем OAuth и должны доставлять токен доступа по любому запросу. Может быть, в качестве параметра или в HTTP-заголовке?
  • Поддержка HTTPS / SSL
  • Поддержка с разбивкой по страницам и отношениям (с ленивой загрузкой) была бы замечательной! Кроме того, структура должна быть приспособлена для этих целей.

Мы уже нашли следующие рамки и любезно попросим вас, ребята, оценить их. Возможно, один из вас использовал некоторые из них или что-то другое …


  • Android: RESTProvider от Novoda / Carl-Gustaf Harroch

    • Поставщики предлагают абстрагирование от источников данных на Android, а RESTProvider автоматически анализирует ответы API RESTful в Провайдере. RESTProvider – это реализация всех обычно повторно реализованных функций при работе с веб-сервисами на Android. Пользователи могут легко взаимодействовать с любым API веб-сервисов, который обеспечивает JSON или XML в качестве ответа. Чтобы запросить RESTProvider в активности, пользователю нужно указать только конечную точку, а затем запросить функции RESTful API. RESTProvider также обрабатывает все HTTP-запросы и кэширование.
    • Не нашли много документации, кроме
    • Обеспечивает также кеширование
    • Релиз + Документация запланирована на начало 2011 года

  • IOS: http://iphoneonrails.com/

    • Lib для связи между iOS и Rails
    • RESTful и «ActiveResource»
    • Включает XML / JSON Parser
    • Бесплатная лицензия
    • Pagination ?, android ?, ленивая загрузка?

  • Android: ручной подход с использованием курсоров, поддерживаемых SQLLite DB
    • Предназначенный для очень высокой производительности и лучшей практики Android
    • Использует курсоры

  • Android: Весенний шаблон для Android Rest Template
    • Spring Restmemplate Spring – это надежный, популярный Java-клиент REST. Spring Template Module представляет собой версию RestTemplate, которая работает в среде Android.

  • Android: вы всегда должны взглянуть на это видео Google IO 2010, когда думаете серьезно о REST

  • Android: Feed Framework
    • com.google.android.feeds
    • Коллекция классов, которая поможет вам создавать контент-провайдеров. Эта среда специально разработана для подключения вашего приложения к веб-интерфейсам.

Solutions Collecting From Web of "RESTful для Android, iOS …?"

Я являюсь автором RESTProvider. Еще очень ранний этап, поэтому я бы не рекомендовал использовать его в производстве. Я использую его по нескольким проектам, которые производятся, но я адаптировал большинство кодов к конкретным потребностям. Я попытаюсь получить публичный стабильный API к концу года.

Что касается переделки API, я бы предложил следующее:

  1. Использовать сжатие GZip
  2. Использовать ETags для кеширования
  3. Используйте стандарты без изменений (я видел случаи, когда именование изменилось с oauth_token на my_token, что делает большую библиотеку бесполезной без изменений) – OAuth / REST
  4. Используйте создание / измененную метку времени и удаленные идентификаторы для всех объектов, чтобы включить кеширование на стороне клиента (предложения SQLite): {"myobject": {"createdAt": xxxx, "rid": "hashvalue"}} 4a. Используйте хороший способ для идентификации объекта, возвращаемого для пользователя / действия / приложения: opensocial использует «идентификатор приложения» + «идентификатор пользователя» + «идентификатор активности»
  5. Предпочитаю JSON над XML
  6. Предпочитают простоту (наименьшая возможная глубина)
  7. Вернуть полный объект с отношением один к другому внутри этого объекта: {"parent": …. "has": {"полный объект не только идентификатор"}}
  8. Не возвращайте только идентификаторы («категория»: [2,3,4] должна быть «категория»: [{«name»: «testing», «id»: 2}, {«name»: «production», "Id": 3}})
  9. Подумайте, что каждый вызов не зависит друг от друга (т. Е. У меня должно быть достаточно информации для вызова http://test.com/object.json для заполнения моих просмотров)

Для документации: 1. предоставить тестовые серверы 2. предоставить cUrl для тестирования 3. предоставить образцы сценариев в java / php / ruby ​​и т. Д. …

Это все, что я могу сейчас подумать. Я мог бы добавить ontop этого, поскольку я прихожу с большим предложением.

Я бы рекомендовал взглянуть на RestKit для iOS

  • Высокопроизводительный многопоточный сетевой уровень с простым API для запросов / ответов
  • Система сопоставления объектов для сопоставления удаленных полезных нагрузок в локальные объекты декларативно (включая отношения)
  • Интеграция с основными данными для обеспечения быстрого локального кэша удаленных данных с возможностями синхронизации
  • Поддержка создания исходной базы данных из серии полезных данных JSON
  • Конкретная поддержка интеграции с бэкэндами Ruby on Rails (RKRailsRouter)
  • Лицензия на Apache
  • Используется в производстве в ряде отличных приложений (например, Gate Guru )

Просто добавьте Spring SpringTemplate. Вот ссылка на вызовы https SSL. Надеюсь, это поможет другим. Долго искал это решение.

http://www.makeurownrules.com/secure-rest-web-service-mobile-application-android.html