2010-11-04 4 views
11

Моя компания переработав его API и хочет сделать все правильно на этот раз;) Thats установки ...RESTful фреймворки для Android, iOS ...?

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

Мы хотим достичь с помощью системы ...

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

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


  • Android: RESTProvider from Novoda/Carl-Gustaf Harroch

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

  • IOS: http://iphoneonrails.com/

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


  • Android: Spring Android Rest Template Module
    • Спринг RestTemplate является надежным, популярным клиентом REST Явы. Модуль шаблонов Spring Android Rest предоставляет версию RestTemplate, которая работает в среде Android.

  • Android: Вы всегда должны смотреть на this video of Google IO 2010, когда речь идет о серьезной REST

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

После довольно долгого времени оценки, мы решили выбрать «Spring Android Rest шаблона модуля» в настоящее время. – OneWorld

ответ

11

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

В отношении переделки API, я хотел бы предложить следующее: сжатие

  1. Использование GZip
  2. Используйте ETags для кэширования
  3. Используйте стандарты без изменений (я видел случаи, когда именование изменено с oauth_token to my_token, который делает большую библиотеку бесполезной без изменений) - OAuth/REST
  4. Использовать создание/изменение метки времени и удаленных идентификаторов для всех объектов, чтобы включить кеширование на стороне клиента (предложения SQLite conflict): {"m yobject ": {" createdAt ": xxxx," rid ":" hashvalue "}} 4a. Используйте хороший способ, чтобы идентифицировать объект, возвращаемым для пользователя/деятельность/приложения: OpenSocial использует «идентификатор приложения» + «идентификатор пользователя» + «активность идентификатор»
  5. Предпочитает JSON над XML
  6. Предпочитает простоту (самую низкую глубину возможной)
  7. Возвращает полный объект с одного ко многим отношений внутри этого объекта: { «родитель»: .... «есть»: { «полный объект не только ID»}}
  8. не возвращайте Только идентификаторы («категория»: [2,3,4] должны быть «категория»: [{«name»: «testing», «id»: 2}, {«name»: «production», «id»: 3}})
  9. Рассмотрите каждый вопрос ll быть независимыми друг от друга (т.е. Я должен иметь достаточно информации для вызова http://test.com/object.json, чтобы заполнить мое мнение)

Для документации: 1. предоставить тестовые серверы 2. обеспечивают Curl для тестирования 3. предоставить примеры сценариев в Java/PHP/рубин и т.д ..

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

+0

Пункт 8 (и общие принципы REST): убедитесь, что каждая «вещь» уникально идентифицирована и доступна через URL-адрес. URL-адрес (UNIQUE-локатор ресурсов) может использоваться как идентификатор объектов. –

+0

привет, так он достаточно стабилен, я намереваюсь использовать его в проекте. –

5

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

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

Я использую RestKit для iOS в нескольких моих проектах. Он всегда соответствует ожиданиям. – Umair

Смежные вопросы