RESTful фреймворки для Android, iOS ...? - PullRequest
11 голосов
/ 04 ноября 2010

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

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

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

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

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


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

    • Провайдеры предлагают абстракцию от источников данных на 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
    • бесплатная лицензия
    • нумерация страниц ?, android ?, ленивая загрузка?


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


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

Ответы [ 3 ]

11 голосов
/ 05 ноября 2010

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

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

  1. Использовать сжатие GZip
  2. Используйте ETags для кеширования
  3. Использование стандартов без изменений (я видел случаи, когда именование изменялось с oauth_token на my_token, что делает большинство библиотек бесполезными без изменений) - OAuth / REST
  4. Используйте создание / измененную временную метку и удаленные идентификаторы для всех объектов, чтобы включить кэширование на стороне клиента (условия конфликта SQLite): {"myobject": {"creationAt": xxxx, "rid": "hashvalue"}} 4а. Используйте хороший способ для идентификации объекта, возвращаемого для пользователя / действия / приложения: opensocial использует «идентификатор приложения» + «идентификатор пользователя» + «идентификатор активности»
  5. Предпочитаю JSON, а не XML
  6. Предпочитают простоту (минимальная возможная глубина)
  7. Возвращает полный объект с отношением один ко многим в этом объекте: { "Родитель": .... "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 ​​и т. Д. *

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

5 голосов
/ 18 января 2011

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

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

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

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

...