RESTful фреймворки для Android, iOS...?

Моя компания дорабатывает свой API и хочет сделать все правильно на этот раз;) Вот и все...

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

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

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

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


  • Android: RESTProvider от Новода / Карл-Густав Харрок

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

  • iOS: http://iphoneonrails.com/

    • Lib для связи между iOS и Rails
    • RESTful и на основе ActiveResource
    • включает в себя XML/JSON Parser
    • бесплатная лицензия
    • нумерация страниц?, Android?, Ленивая загрузка?


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


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

3 ответа

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам