RESTful для Android, iOS …?

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

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

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

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

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


  • 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 Restemplate Spring – это надежный, популярный Java-клиент REST. Модуль шаблонов Spring Android Rest предоставляет версию RestTemplate, которая работает в среде Android.

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

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

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

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

  1. Использовать сжатие GZip
  2. Использовать ETags для кеширования
  3. Используйте стандарты без каких-либо изменений (я видел случаи, когда имя было изменено с oauth_token на my_token, что делает большую библиотеку бесполезной без изменений) – OAuth / REST
  4. Используйте создание / измененную метку времени и удаленные идентификаторы для всех объектов, чтобы включить кеширование на стороне клиента (предложения SQLite): {“myobject”: {“createdAt”: xxxx, “rid”: “hashvalue”}} 4a. Используйте хороший способ для идентификации объекта, возвращаемого для пользователя / активности / приложения: opensocial использует «id приложения» + «идентификатор пользователя» + «идентификатор активности»
  5. Предпочитаю JSON над XML
  6. Предпочтительная простота (минимальная глубина)
  7. Верните полный объект с отношением один к многим внутри этого объекта: {“parent”: …. “has”: {“full object not only the ID”}}
  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

  • Передача пакета на startActivity ()?
  • Как нажимать или нажимать текст TextView на разные слова?
  • Android-убийца процесса
  • Захват экрана GLSurfaceView для растрового изображения
  • Могу ли я рисовать за пределами canvasа Android
  • Передача 2D-массива в другую активность
  • Ошибка «Debug certificate expired» в плагинах Android Eclipse
  • Как обернуть длинный текст в прядильщик
  • Используйте шрифт Roboto в приложении с минимальным уровнем API 14
  • Горизонтальная вкладка «и»
  • Как проверить, подписана ли APK или «отладить сборку»?
  • Interesting Posts
    Давайте будем гением компьютера.